gpt4 book ai didi

javascript - 现有属性返回未定义

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:22 25 4
gpt4 key购买 nike

我开始使用 Node.js、express 和 mongodb 实现 RESTful API。到目前为止一切都很顺利,我有一个对用户进行身份验证的路线,如下所示:

apiRoutes.post('/authenticate', function(req, res) {
User.findOne({
nickname: req.body.nickname
}, function(err, user) {

if (err) throw err;

if (!user) {
res.json({
success: false,
message: 'Authentication failed. User not found.'
});
} else if (user) {
console.log(user);
console.log(user.nickname);
console.log(user.email);
console.log(user.password);
console.log(user.sexe);

if (user.password != req.body.password) {
res.json({
success: false,
message: 'Authentication failed. Wrong password.'
});
} else {
var token = jwt.sign(user, app.get('salt'), {
expiresInMinutes: 1440 // expires in 24 hours
});

res.json({
success: true,
token: token
});
}
}
});
});

检索用户并登录控制台,如下所示:

{ sexe: 'H',
email: 'MrPanda@gmail.com',
password: 'bambou',
nickname: 'MrPanda',
_id: 56cb703e7aef3f83c7dac0a7 }

这是完美的,但是接下来的三个 consol.log 返回以下三行:

MrPanda
MrPanda@gmail.com
undefined
H

我完全看不出此时密码未定义的原因,我尝试将属性名称更改为“mdp”,同样的问题...有什么想法吗?谢谢

最佳答案

如果您使用 mongoose,它不会返回纯 JSON 对象。它实际上是一个特殊的 mongoose 对象,可能无法按您期望的方式运行。

您有两个选择:

  1. mongoose 对象转换为 JSON 对象。

    • {lean: true} 添加到 Users 选项参数。
    • JSON.stringify(用户)
    • user.toJSON()
  2. 使用正确的 get()set() 方法(无论如何你都应该这样做)。

    • user.get('密码')
    • user.get('电子邮件')
    • user.get('姓名')

尝试一下,如果它仍然不起作用,请告诉我。

关于javascript - 现有属性返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com