如何从Node中的父函数返回值?

时间:2014-08-08 13:53:03

标签: node.js mongodb

function validateLogin(username,passwordPlaintext) {
    db.collection('users').findOne({"username": username}, (function(err, user) {
        return bcrypt.compareSync(passwordPlaintext, user.passwordHash);
    });
}

这是我目前的代码。它接收用户名和明文密码,然后散列密码并将其与数据库进行比较。使用console.log,我已经验证了一切正常,但我无法弄清楚如何返回bcrypt从validateLogin()生成的布尔值。

1 个答案:

答案 0 :(得分:4)

你应该传递"回调"当validateLogin准备好返回结果时要调用的函数。节点中的常见模式是,回调的第一个参数是错误(如果发生了一个),第二个参数是结果:

function validateLogin(username,passwordPlaintext,callback) {
    db.collection('users').findOne({"username": username}, (function(err, user) {
        if( err ) {
          return callback( err );
        }
        return callback( null, bcrypt.compareSync(passwordPlaintext, user.passwordHash ) );
    });
}