Javascript nodejs和express中的自定义字段验证和错误处理
我正在尝试在注册时添加用户名字段,我已经使用express validator进行了验证,以确保它不是空的,因为我希望每个人都有自己的唯一用户名。与我们使用电子邮件检查用户是否存在的方法相同,我也希望使用用户名进行检查。。。请检查我下面的代码 你知道我该如何显示用户名的错误,而不是已经存在的电子邮件错误吗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
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"
})
}
}
}