无法在MongoDB中找到数据并使用.then

时间:2017-02-11 19:15:24

标签: javascript mongodb express

我尝试创建非常简单的身份验证系统。在我的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,它等于数据库中的值。

我的错误在哪里以及如何解决?

1 个答案:

答案 0 :(得分:0)

使用回调解决并找到而不是findOne。谢谢大家!