【问题标题】:custom field validation and error handling in nodejs and expressnodejs 和 express 中的自定义字段验证和错误处理
【发布时间】:2020-04-25 05:32:20
【问题描述】:

我正在尝试在注册时添加用户名字段,我已经使用 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'
      }]
    })
  }

【问题讨论】:

标签: javascript node.js express mongoose


【解决方案1】:

您应该使用findOne(如果文档不存在则返回null)而不是find 返回和数组

if(user)

永远是真的,如下所示

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' }]
            })
        }


}

此外,您的查询将查找电子邮件和用户名的组合,即您提供的用户名或电子邮件都存在的地方

你可以做的是使用$or操作符

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"
            })
        }

    }


}

【讨论】:

    猜你喜欢
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    相关资源
    最近更新 更多