根据MongoDB检查login凭据不起作用

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中的login凭据,如果值不匹配,则返回false

但是它总是redirect到userlist.jade文件。 有人可以解释为什么吗?

由于callback函数中的当前逻辑,您的代码总是redirect到userlist.jade文件:由于find()方法返回一个游标,所以if语句检查是否有错误或者没有返回的游标与匹配的文档,因此variablesdoc是一个总是返回的游标,无论是否匹配。 改用findOne()方法:

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