【发布时间】:2016-08-14 19:58:00
【问题描述】:
我的 Express 应用程序使用此控制器方法调用模型函数 verify,该函数使用 NeDB 的 find 方法在文档数据库文件中查找。这是验证方法..
verify : function(username, password) {
db.find({ email: username }, function (err, docs) {
return passwordHash.verify(password, docs[0].password);
});
},
这是调用该函数的代码。
post_admin : function(req, res) {
if (!req.body.email || !req.body.password) {
res.render('login', { title: 'Please provide your login details' });
}else if(''!=req.body.email && ''!=req.body.password){
var i = User.verify(req.body.email, req.body.password);
if(i){
res.render('admin/dashboard', { title: 'Successfully Logged In' });
}else{
res.render('login', { title: 'Not correct details!' });
}
}else{
res.render('login', { title: 'Not correct details!' });
}
},
...但即使它与文件中找到的数据匹配,它也会返回 false,并且应该返回 true。当我在 db.find 方法中进行控制台时,它显示为 true,但 verify 方法返回 false。结果,条件块总是执行 else 部分。当我同时控制台时,我看到条件在 db.find 记录任何内容之前执行。这是由于编程的异步性质造成的吗?我应该如何处理这个问题,因为我需要确定应该在控制器中呈现哪个视图!有没有办法在不破坏 Javascript 的异步特性的情况下做到这一点?我错过了什么明显的东西吗?
【问题讨论】:
标签: javascript node.js express model-view-controller