Как проверить зарегистрирован пользователь в бд posqresql?

Здравствуйте, как можно сделать проверку на то, существует ли пользователь в бд
Сделал регистрацию на node + postgresql
async registration(email, password) {
        const condidate = db.query("SELECT * FROM users WHERE email = $1", [email])

        if (condidate) {
            return `пользователь существует`
        }else {
            const hashPassword = await bcrypt.hash(password, 3)
            const activationLink = uuid.v4()


            const user = await db.query('INSERT INTO users (email,password,activationlink) VALUES($1,$2,$3) RETURNING *', [email, hashPassword, activationLink])
            await mailService.sendActivationMail(email, `${process.env.API_URL}/api/activate/${activationLink}`)
            const tokens = tokenService.generateToken({...user})
            await tokenService.saveToken(user.id, tokens.refreshtoken)

            return {
                ...tokens, user: user
            }
        }
    }


Если сделать return condidate то выводится данные где есть email, но если я делаю return condidate.rows или return condidate.rowsCount то ничего не выводится и email с паролем добавляются в бд в любом случае.

Пользователь регистрируется даже если email уже есть в записях бд
Как можно проверить существует ли пользователь в бд?
  • Вопрос задан
  • 281 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Holden3377
Я решил это так:
const candidate = await pool.query('SELECT EXISTS (SELECT * FROM customer WHERE email = $1);', [email])
        const isRowExists = candidate.rows[0]
        if (isRowExists.exists == true) {
            return res.status(400).json({message: `User with email:${email} is already exist`})
        } else {
            const hashPassword = await bcrypt.hash(password, 8)
            const newUser = await pool.query(`INSERT INTO customer (firstname, lastname, email, pass) values ($1, $2, $3, $4) RETURNING *;`, [firstName, lastName, email, hashPassword])
            return res.json({message: `User ${firstName} was created`})
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы