2017-02-10 3 views
0

Ich versuche zu überprüfen, ob Benutzer in MongoDb existiert. Aus unbekannten Gründen nach fand ich, dass der Benutzer exsists und Antwort senden, es mir ist die Anmeldung, dass der Benutzer nichtWarum bekomme ich zwei Antworten von Suchabfrage?

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

}); 

Ausgang ist exsists: (erster Benutzer existiert nicht und die zweite existiert nicht)

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

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

Warum, nachdem ich festgestellt habe, dass der Benutzer existiert, erhalte ich eine andere Protokollzeile, die er nicht gefunden hat?

Antwort

0

Dies geschieht, weil Sie über das Ergebnis Cursor sind Iterieren each verwenden, die ihren Rückruf mit einem Parameterwert von null ein letztes Mal aufruft, um zu signalisieren, dass der Cursor erschöpft ist.

Stattdessen möchten Sie wahrscheinlich findOne hier zu verwenden:

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(); 
    } 
}); 
Verwandte Themen