Bcrypt密码比较不存在';不行。甚至user.password在Node.js Express应用程序中也是空的

Bcrypt密码比较不存在';不行。甚至user.password在Node.js Express应用程序中也是空的,node.js,mongodb,express,mongoose,bcrypt,Node.js,Mongodb,Express,Mongoose,Bcrypt,在这里,我将学习Node.js Express应用程序中的MongoDB。 我正在用Bcrypt保护我的密码。mongodb中的加密和保存是成功的,但当我尝试比较SigIn的密码时,它失败了 注册路线 登录路线 具有登录的有效凭据,它显示 {“状态”:404,“数据”:“未找到用户”} 即使我尝试只发送密码,如果电子邮件是匹配的,它仍然不会返回任何信息 User.find({incomingEmail}).then((user) => { res.send(user.pas

在这里,我将学习Node.js Express应用程序中的MongoDB。 我正在用Bcrypt保护我的密码。mongodb中的加密和保存是成功的,但当我尝试比较SigIn的密码时,它失败了

注册路线

登录路线

具有登录的有效凭据,它显示

{“状态”:404,“数据”:“未找到用户”}

即使我尝试只发送密码,如果电子邮件是匹配的,它仍然不会返回任何信息

User.find({incomingEmail}).then((user) => {
        res.send(user.password);
    }).catch(() => {
        res.status(404).json({status: 404, data: 'Email not matched'});
    });
我在Windows10上使用WebStorm

节点版本为11.12.0

Project package.json

"dependencies": {
"bcrypt": "3.0.4",
"body-parser": "latest",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"mongodb": "^3.1.13",
"mongoose": "^5.4.17",
"mongoose-unique-validator": "^2.0.2",
"morgan": "~1.9.0"


}

如果有人有答案,请告诉我。谢谢

您的代码没有问题。我已经在我这边测试过了。我看到的唯一异常是,在发送响应时,您有一个响应数组,但将其作为单个对象读取

这就是我所说的上述术语的意思

而不是

User.find({incomingEmail}).then((user) => {
    res.send(user.password);
}).catch(() => {
    res.status(404).json({status: 404, data: 'Email not matched'});
});
这样做

User.find({incomingEmail}).then((user) => {
        res.send(user[0].password);
    }).catch(() => {
        res.status(404).json({status: 404, data: 'Email not matched'});
});
或者在另一种情况下


我可以看到你可以做的是,而不是使用猫鼬只找到方法!您也可以使用FINDONE方法,这样它就不需要为单个用户读取JSON响应数组FINDONE将帮助您使用已有的代码。

尝试
User。改为查找({email:incomingEmail})
。同意@LawrenceCherone,您的模式中似乎没有
incomingEmail
字段。此外,无需通过
mongoose与mongodb建立连接。在每条路由下连接
。启动应用程序后,只需连接到数据库。指向“您的代码”实际上是
User.find({incomingEmail:incomingEmail})
这就是解构的方式works@LawrenceCherone是的,它工作了,但仍然
res.send(user.password)
响应为空。在这里,我只需要知道如何选择特定的项目,并将其作为响应发送。
User.find({incomingEmail}).then((user) => {
    res.send(user.password);
}).catch(() => {
    res.status(404).json({status: 404, data: 'Email not matched'});
});
User.find({incomingEmail}).then((user) => {
        res.send(user[0].password);
    }).catch(() => {
        res.status(404).json({status: 404, data: 'Email not matched'});
});