2017-02-10 3 views
0

사용자가 MongoDb에 있는지 확인하려고합니다. (처음 사용자가없는 존재하고 두 번째는 존재 않음)왜 검색 쿼리에서 두 개의 응답이 표시됩니까?

Try to login: 
userName: sdlkj 
pass: lkj 
User Does Not Exsists 

Try to login: 
userName: sivan 
pass: lkj 
User Exsists 
User Does Not Exsists 
: 알 수없는 이유로 나는 사용자가

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') 
    } 

}); 

출력을 exsists하지 않는 나를 로그인있어, 사용자 exsists하고 응답을 보낼 것을 발견 한 후

사용자가있는 것을 발견 한 후 찾을 수없는 다른 로그 라인이 나타납니다.

답변

0

커서가 소진되었음을 알리기 위해 null의 매개 변수 값으로 콜백을 마지막으로 호출하는 each을 사용하여 결과 커서를 반복하기 때문에 이러한 현상이 발생합니다.

대신, 당신은 아마 여기 findOne를 사용하려면 :

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(); 
    } 
}); 
관련 문제