我尝试创建非常简单的身份验证系统。在我的MongoDB数据库中,我有这些数据:
{
"__v": 0,
"password": "4c1b9bb3405f53cf46731af89f07b01d1ffe974f944d81085cb962abc45ee9c3",
"_id": "589f5ee85a3b61176c9d0a61"
}
然后我尝试通过这些功能检查它:
router.post('/api/admin/login', (req, res) => {
db.getRootToken(req.body).then(function(data) {
if (data.error) {
return res.status(403).send(data);
} else {
return res.status(200).send(data);
}
});
});
function getRootToken(data) {
console.log(data.password);
var password_sha256 = sha256(data.password);
console.log(password_sha256);
Root.findOne({ password: password_sha256 }, function(err, docs) {
console.log(docs.length);
if (docs.length) {
console.log("root found");
return { token: password_sha256 };
} else {
console.log("root not found");
return { error: "Incorrect password!" };
}
});
}
但是当我尝试将/api/admin/login
与{ "password" : "pa55word" }
一起使用时,
我明白了:
TypeError:无法读取未定义的属性“then”
此外,应用程序找不到任何数据,因为此代码返回“找不到根”,但哈希函数为“pa55word”提供了4c1b9bb3405f53cf46731af89f07b01d1ffe974f944d81085cb962abc45ee9c3
,它等于数据库中的值。
我的错误在哪里以及如何解决?
答案 0 :(得分:0)
使用回调解决并找到而不是findOne。谢谢大家!