声明:我是一个新的web开发者。猫鼬 - 一次使用findOne多次
我正在创建注册页面。有5个输入字段,其中3个(用户名,密码和电子邮件)要求他们通过各种形式的验证。这里是代码:
router.post('/register', function (req, res, next) {
user.username = req.body.username;
user.profile.firstName = req.body.firstName;
user.profile.lastName = req.body.lastName;
user.password = req.body.password;
user.email = req.body.email;
User.findOne({email: req.body.email}, function(err, existingEmail) {
if(existingEmail) {
console.log(req.body.email + " is already in use")
} else {
User.findOne({username: req.body.username}, function(err, existingUsername) {
if(existingUsername) {
console.log(req.body.username + " is already in use");
} else {
user.validate({password: req.body.password}, function(err) {
if (err) {
console.log(String(err));
} else {
user.save(function(err, user) {
if (err) {
return next(err);
} else {
return res.redirect('/')
}
})
}
});
}
});
}
});
});
基本上它首先检查,看它是否是重复的电子邮件;如果它是一个重复的电子邮件,它在console.log中是这样说的。如果它不是重复的电子邮件,它会检查用户名....然后进入密码。
问题是,它一次只做一件事;如果用户输入不正确的电子邮件和用户名,它只会说电子邮件不正确(它不会说电子邮件和用户名都不正确)。
我怎样才能得到这个验证所有3种形式在同一时间?
感谢您的评论。我试着用你写的代码逐字记录,甚至尝试自己做出调整,但是我无法得到这个工作。如果我尝试在注册表单中输入2个错误(即我输入了重复的用户名和电子邮件),它会检测到电子邮件是重复的...然后浏览器运行不断(它永远不会说'用户名已存在',但浏览器继续循环,永远不会离开注册页面)。 – MonkeyOnARock
这是因为如果有错误,我只是控制台登录它,没有发回回应,请检查更新。 – war1oc