MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Rappel lors de l'opération MongoDB avec Node.js

Vous appelez tout de suite la fonction de rappel, mais aller à la base de données prend du temps et se fait donc de manière asynchrone. Au lieu de cela, appelez votre rappel au moment opportun en utilisant l'argument de résultat de la fonction passée comme dernier paramètre au .findOne() fonction. Le rappel doit obtenir un argument d'erreur et un argument de résultat :

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

cela ne fait que tirer le même modèle que celui utilisé par le pilote mongodb. J'espère que cela aidera.