我正在尝试重新使用user
在以下函数中命名的变量:
UserModel.prototype.authenticate = function (doc, callback) {
// check to see if the username exists
this.users.findOne({ username: doc.username }, function (err, user) {
if (err || !user)
return callback(new Error('username not found'));
// hash the given password using salt from database
crypto.pbkdf2(doc.password, user.salt, 1, 32, function (err, derivedKey) {
if (err || user.password != derivedKey)
return callback(new Error('password mismatch'));
// explicitly define the user object
var user = {
_id: user._id,
type: user.type,
username: user.username,
displayname: user.displayname
};
return callback(err, user);
});
});
};
我尝试重新定义回调函数user
内部的变量。pbkdf2
这不像我预期的那样工作。我比较user.password != derivedKey
中断的行,因为user
在运行时此处未定义。不应该user
仍然是findOne
回调方法参数中的实例吗?如果我将两个user
变量中的任何一个更改为其他变量,它就会起作用。
我可以重命名变量,但这仍然让我想知道。