我正在尝试创建一个异步密码检查,但我似乎无法让它工作(我有一种感觉我的仍然粗略的async和回调知识是怪)。
method
:
ProSchema.methods.correctPassword = function(password, next) {
console.log('FIRE 1');
bcrypt.compare(password, this.local.password, function(err, result) {
if (err) {
console.log('FIRE 2');
return next(err);
}
console.log('FIRE 3: '+result);
return result;
});
};
假设没有错误,则控制台日志显示为:
FIRE 1
FIRE 3: true
快乐的日子。但是我在护照配置中使用了这个method
:
var pass = pro.correctPassword(password);
if (!pass) {
console.log(pass);
return done(null, false, "Wrong password.");
}
嵌入在该语句中的控制台日志始终输出为undefined
。
现在我想我理解为什么 - 因为当if
语句执行时bcrypt仍在检查密码(这是正确的吗?),所以我尝试了以下内容:
pro.correctPassword(password, function(err, result) {
console.log(result);
})
即。我在方法调用中添加了一个回调函数,我的想法是我可以将if (!pass)
放在那里,它只会在返回响应时执行。但是......这似乎不起作用,根本。该控制台日志甚至从未触发过。
所以我有点卡住了。如果有人能帮助向这个迷失的灵魂解释我的方法有什么问题,我会非常感激!正如我所说,我仍然试图进入异步/回调心态,我想我已经到了那里......但显然还有一段路要走。