Node.js 为什么我';我从find query中得到两个响应?
我试图检查MongoDb中是否存在用户。 由于未知原因,在我发现该用户存在并发送响应后,它会记录我该用户不存在Node.js 为什么我';我从find query中得到两个响应?,node.js,mongodb,node-mongodb-native,Node.js,Mongodb,Node Mongodb Native,我试图检查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: ' + u
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')
}
});
输出:(第一个用户不存在,第二个用户不存在)
为什么在我发现用户存在后,我会得到另一个它没有找到的日志行 之所以发生这种情况,是因为您正在使用对结果游标进行迭代,它最后一次使用参数值
null
调用其回调,以表示游标已用尽
相反,您可能希望在此处使用:
Try to login:
userName: sdlkj
pass: lkj
User Does Not Exsists
Try to login:
userName: sivan
pass: lkj
User Exsists
User Does Not Exsists
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();
}
});