我试图检查MongoDb中是否存在用户。 在我发现用户存在并发送响应后,由于未知原因,它记录了用户不存在的情况
app.post("/login", function(req, res) {
var userName = req.body.userName;
var pass = req.body.pass;
console.log('')
console.log('Try to login:')
console.log('userName: ' + userName);
console.log('pass: ' + pass);
if(req.body.userName && req.body.pass)
{
db.collection("customers").find({first_name:userName}, function(err, docs) {
docs.each(function(err, doc)
{
if(doc) {
//console.log(doc);
console.log('User Exsists')
res.send('YES');
}
else {
console.log('User Does Not Exsists')
res.end();
}
})});
}
else
{
console.log('NO')
res.send('NO')
}
});
输出:(第一个用户不存在,第二个用户存在)
Try to login:
userName: sdlkj
pass: lkj
User Does Not Exsists
Try to login:
userName: sivan
pass: lkj
User Exsists
User Does Not Exsists
为什么在我发现用户存在后,我找到了另一个未找到的日志行?
答案 0 :(得分:0)
这种情况正在发生,因为您使用each
迭代结果游标,findOne
最后一次调用其回调,参数值为null
,表示游标已耗尽。
相反,您可能希望在此处使用http://blog.nuget.org/20130814/nuget-2.7-release-candidate.html:
db.collection("customers").findOne({first_name: userName}, function(err, doc) {
if(doc) {
console.log('User Exsists')
res.send('YES');
}
else {
console.log('User Does Not Exsists')
res.end();
}
});