Mongoose方法结果始终未定义

时间:2015-07-28 15:00:09

标签: javascript node.js mongodb asynchronous passport.js

我正在尝试创建一个异步密码检查,但我似乎无法让它工作(我有一种感觉我的仍然粗略的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)放在那里,它只会在返回响应时执行。但是......这似乎不起作用,根本。该控制台日志甚至从未触发过。

所以我有点卡住了。如果有人能帮助向这个迷失的灵魂解释我的方法有什么问题,我会非常感激!正如我所说,我仍然试图进入异步/回调心态,我想我已经到了那里......但显然还有一段路要走。

0 个答案:

没有答案