0
我在這裏有點困惑這個寄存器route.As你可以看到我執行一些驗證檢查之前發送數據到數據庫。如何使它按順序工作?
首先,我正在檢查表單中的空字段,然後檢查記錄中的用戶名和電子郵件存在以及最後一次密碼確認。 所有這些東西都正常工作,但由於數據庫查詢應用程序的異步行爲每次崩潰。
/* POST Register User */
router.post('/register',function(req,res,next){
let user = req.body;
//checking for empty field in a form
for(let key in user){
if(user[key] === ""){
return next(mid.error("All fields are required to fill"));
}
}
User.findOne({username:user.username})
.exec(function(err,user){
if(err){
return next(mid.error("Something went wrong"));
}
if(user){
return next(mid.error("Username already exist"));
}
});
User.findOne({email:user.email})
.exec(function(err,user){
if(err){
return next(mid.error("Something went wrong"));
}
if(user){
return next(mid.error("Email already exist"));
}
});
//matching password
if(user.password !== user.confirm){
return next(mid.error("Password not matched.Try again !"));
}
//save data in object
let userData = {
username : user.username,
email : user.email,
password : user.password
};
//save data in database
User.create(userData,function(err,user){
if(err){
return next(mid.error("Something went wrong.Try again !!!"));
} else {
req.session.userID = user._id;
return res.redirect('/home');
}
});
});
有沒有什麼辦法可以從中得到消除?
可能的誘惑https://stackoverflow.com/questions/22485800/waiting-for-multiple-callbacks-in-node-js – JohnnyHK