我正在尝试查询数据库中与用户输入匹配的电子邮件地址。我正在使用findOne()
,但不知何故我遇到了问题:
Profile.findOne({emailaddress : req.body.emailaddress}, function(matchinguser) {
console.dir("matching user" + matchinguser);
Profile.create(req.params.all(), function (err, profile) {
console.dir(profile);
if (err) {
req.session.flash = {
err: err
}
return res.redirect('/profile/new')
}
res.redirect('/profile')
req.session.flash = {};
}) //profile created
}) //findone
答案 0 :(得分:0)
我认为代码存在一些问题。回调中缺少的“错误”是其中之一,但我认为你应该使用“exec”。现在,您的函数正在尝试执行,就像在sails.js中格式化本机查询一样。这是我推荐的调整代码:
Profile.findOne({emailaddress : req.body.emailaddress}).exec(err,function(matchinguser) {
//Handle errors
if (err){ return res.negotiate(err);}
//Handle success
//I assume do some checks on the user found e.g. return them or if not found create the user
if(!matchinguser){
//No user found so redirect back
return res.redirect('/profile');}
//Rest of your code can go in here if needed I've just redirected you back for now.
return res.redirect('/profile/);
});
我也会小心在你的查询中直接使用req.body.emailaddress而不检查它,但那只是我。