2017-02-10 5 views
0

Я пытаюсь проверить, существует ли пользователь в MongoDb. По неизвестным причинам после того, как я обнаружил, что exsists пользователя и отправить ответ, это вход мне, что пользователь не 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') 
    } 

}); 

Выход: (первые пользователи не существует, а второй делает существует)

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

Это происходит потому, что вы повторяете курсор результата с использованием each, который вызывает его обратный вызов в последний раз со значением параметра null, чтобы сигнализировать о том, что курсор исчерпан.

Вместо этого, вы, вероятно, хотите использовать 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(); 
    } 
}); 
Смежные вопросы