sql >> Databasteknik >  >> NoSQL >> MongoDB

Återuppringning vid MongoDB Operation With Node.js

Du anropar återuppringningsfunktionen direkt, men att gå till db tar tid och görs därför asynkront. Ring istället din återuppringning vid lämplig tidpunkt med hjälp av resultatargumentet för funktionen som skickades som den sista parametern till .findOne() fungera. Återuppringningen bör få ett felargument och ett resultatargument:

login: function(user, pass, callback) {
    db.open(function (err, db) {
        if(!err) {
            db.collection("users", function(err, collection) {
                collection.findOne(
                    {
                        "username": user,
                        "password": pass
                    },
                    function(err, item) {
                        if(!err) {
                            callback(null,item);
                        } else {
                            callback("error");
                        }
                    }
                );
            });
        } else {
            callback("error",null);
        }
    });
}


user.login("test", "test", function(err,msg) {
    if( err ) {
      //error occured above;
    } else {
      //success
      console.log(msg);
    }
});

detta är bara att dra igenom samma mönster som mongodb-föraren använder. hoppas det hjälper.




  1. Hur byter jag namn på fält när jag utför sökning/projektion i MongoDB?

  2. Atomicitet, isolering och samtidighet i MongoDB

  3. Konvertera base64-bild till en fil i Node Js

  4. Pymongo markörgräns(1) returnerar mer än 1 resultat