Javascript nodejs和express中的自定义字段验证和错误处理

Javascript nodejs和express中的自定义字段验证和错误处理,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我正在尝试在注册时添加用户名字段,我已经使用express validator进行了验证,以确保它不是空的,因为我希望每个人都有自己的唯一用户名。与我们使用电子邮件检查用户是否存在的方法相同,我也希望使用用户名进行检查。。。请检查我下面的代码 你知道我该如何显示用户名的错误,而不是已经存在的电子邮件错误吗 try { let user = await User.find({ 'email': email, 'username': username }) //Chec

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

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

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


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

你能做的就是使用操作符

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

    }


}