Node.js 为什么我';我从find query中得到两个响应?

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

我试图检查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')  
    }

});
输出:(第一个用户不存在,第二个用户不存在)


为什么在我发现用户存在后,我会得到另一个它没有找到的日志行

之所以发生这种情况,是因为您正在使用对结果游标进行迭代,它最后一次使用参数值
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();
  }
});