从回调函数返回值。

时间:2015-09-16 01:53:04

标签: javascript node.js

我正在尝试实施安全例程来验证密码。函数easyPbkdf2工作正常,但我需要返回有效的布尔值。请帮助不大,我的范围很麻烦。 提前谢谢。

userSchema.methods.verifyPassword = function(password) {
    easyPbkdf2 = new EasyPbkdf2(options);
    easyPbkdf2.verify(this.password_salt, this.password_hash, password, function(err, valid) {
        console.log(valid);
});
return valid; // This doesn't work...[ReferenceError: valid is not defined]
}

2 个答案:

答案 0 :(得分:0)

有效的是在easypbkdf2函数内部分配,但是你在函数中返回值,因此它没有被定义。您可能需要在您正在安慰的函数内返回有效值才能看到有效。如果它适合你,请告诉我

答案 1 :(得分:0)

EasyPbkdf2.verify()是异步的。返回不会起作用的价值。您需要传递回调函数才能返回值。像这样:

userSchema.methods.verifyPassword = function(password, callback) {
    var easyPbkdf2 = new EasyPbkdf2(options);
    easyPbkdf2.verify(this.password_salt, this.password_hash, password, callback);
};


// how to call it
userSchema.methods.verifyPassword(password, function(err, valid) {
    if (err) {
        // do something such as throwing error
    }
    console.log(valid);
});