MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rückruf beim MongoDB-Betrieb mit Node.js

Sie rufen die Callback-Funktion sofort auf, aber das Aufrufen der Datenbank dauert und wird daher asynchron ausgeführt. Rufen Sie stattdessen Ihren Rückruf zum geeigneten Zeitpunkt auf, indem Sie das Ergebnisargument der Funktion verwenden, die als letzter Parameter an .findOne() übergeben wird Funktion. Der Rückruf sollte ein Fehlerargument und ein Ergebnisargument erhalten:

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

dies zieht nur das gleiche Muster durch, das der Mongodb-Treiber verwendet. Ich hoffe, es hilft.