针对MongoDB检查登录凭据不起作用

Checking login credentials against a MongoDB is not working

本文关键字:不起作用 登录 MongoDB 检查 针对      更新时间:2023-09-26
router.post('/checkuser', function(req, res) {
    var db = req.db;
    var userEmail = req.body.useremail;
    var password = req.body.password;
    var collection = db.get('usercollection');
    collection.find( { "email": userEmail }, function (err, doc) {
        if (err || !doc) {
            res.redirect("login");
        } else {
            res.redirect("userlist");
        }
    });
});

此代码应该检查MongoDB中的登录凭据,如果值不匹配,则返回false

但它总是重定向到userlist.jade文件。有人可以解释一下为什么吗?

由于回调函数中的当前逻辑,您的代码始终重定向到userlist.jade文件: 由于find()方法返回游标,if 语句检查是否存在错误匹配的文档没有返回游标,因此变量 doc 是一个游标,无论是否存在匹配,它始终返回。 请改用findOne()方法:

collection.findOne({"email": userEmail}, function(err, user) {
    if( !err && user && user.password === password ) {
        res.redirect("userlist");
    }
    else { res.redirect("login"); }
});