密码值返回未定义,但是使用console.log显示时,用户可以看到
Posted
技术标签:
【中文标题】密码值返回未定义,但是使用console.log显示时,用户可以看到【英文标题】:Password value returns undefined, but when console.log is used to display it, the user can see it 【发布时间】:2020-02-06 20:21:09 【问题描述】:所以我使用 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 )
返回未定义,我真的很困惑为什么!
【问题讨论】:
可能是getter被修改了? 你能做typeof(user)吗 @Sudhakartypeof user
返回对象
可以访问其他字段吗?
@Sudhakar 不,我刚刚尝试过console.log( user.email )
,它也返回 undefined 但该对象仍作为原始帖子输出。
【参考方案1】:
Mongoose/MongoDB result fields appear undefined in javascript
发现上述工作user.toObject();
但是我最初不必这样做,它只是工作,所以不确定发生了什么。
我现在必须致电toObject()
有什么具体原因可以帮助指出吗?
【讨论】:
以上是关于密码值返回未定义,但是使用console.log显示时,用户可以看到的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS event.target.value 返回未定义
req.user 是未定义的,即使它能够 console.log 用户