[英]Password value returns undefined, but when console.log is used to display it, the user can see it
所以我使用 passport.js 作为基本的本地登录策略。
下面的代码是我正在使用的
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(username, password, cb) {
'use strict';
UserModel.findOne({
email: username
}).populate('organisation').exec(function(err, user) {
if (err) {
return cb(err);
}
console.log( user );
if (!user) {
return cb(null, false, {
message: 'Incorrect email.'
});
}
console.log( user );
console.log( user.password );
if (!bcrypt.compareSync(password, user.password) /* true */ ) {
console.log('password incorrect');
return cb(null, false, {
message: 'Incorrect passowrd.'
});
}
return cb(null, user);
});
}));
现在console.log(user)
显示以下内容(已编辑以保存信息)
{ _id: 5d9c8c4ac50eb00cf494bf8d,
date: 2019-10-08T13:16:58.037Z,
forename: 'forename',
surname: 'surname',
email: 'test@example.com',
password:
'$2a$10$ZUtnlBtXsnvw5k517LRYhORPwG.U.2TzCsIwpzM46jLPpMX4iFf4K',
organisation: null,
__v: 0 }
然而, console.log( user.password )
返回未定义,我真的很困惑为什么!
Mongoose/MongoDB 结果字段在 Javascript 中出现未定义
发现上述工作user.toObject();
但是我最初不必这样做,它只是起作用,所以不确定发生了什么。
我现在必须调用toObject()
是否有一些特定的原因可以帮助指出?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.