проверка пользовательских полей и обработка ошибок в nodejs и express - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь добавить поле имени пользователя при регистрации, я уже провел проверку с использованием express -validator, чтобы убедиться, что он не пустой, так как я хочу, чтобы у всех было свое уникальное имя пользователя. Так же, как мы проверяли, существует ли пользователь с помощью электронной почты , я хотел бы также проверить, используя имя пользователя ... пожалуйста, проверьте мой код ниже

Любая идея, как я могу отобразить ошибку для имени пользователя, отдельно от ошибки электронной почты уже существует?

try {
  let user = await User.find({
    'email': email,
    'username': username
  })

  //Check if user exists
  if (user) {
    res.status(400).json({
      errors: [{
        msg: 'user with that name or username already exist'
      }]
    })
  }

1 Ответ

2 голосов
/ 24 апреля 2020

Вы должны использовать findOne (он возвращает null, если документ не существует) вместо этого, так как find возвращает и массив, так что

if(user)

всегда будет true, что-то вроде ниже

try {
        let user = await User.findOne({ 'email': email, 'username': username })

    //Check if user exists
        if (!user) { 
           res.status(400).json({
                errors: [{ msg: 'user with that name or username already exist' }]
            })
        }


}

Кроме того, ваш запрос будет искать комбинацию адреса электронной почты и имени пользователя, ie, где существует как имя пользователя, так и адрес электронной почты, предоставленные вами.

Что вы можете сделать, это использовать $ или оператор

try {
    let user = await User.findOne({
        $or: [{
            'email': email
        }, {
            'username': username
        }]
    })

    //Check if user exists
    if (!user) {
        res.json({
            error: "Both email and username doesn't exist"
        })

    } else if (user) {
        if (user.email != email) {

            res.json({
                error: "Email Doesn't exists"
            })
        } else if (user.username != username) {
            res.json({
                error: "Username Doesn't exists"
            })
        }
       else  {
            res.json({
                error: "Both Username and Email  exists"
            })
        }

    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...