sql >> Databáze >  >> NoSQL >> MongoDB

Zpětné volání při provozu MongoDB s Node.js

Voláte funkci zpětného volání hned, ale přechod do db vyžaduje čas, a proto se provádí asynchronně. Místo toho zavolejte zpětné volání ve vhodnou dobu pomocí argumentu result funkce předané jako poslední parametr do .findOne() funkce. Zpětné volání by mělo dostat argument chyby a argument výsledku:

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

je to jen protažení stejného vzoru, který používá ovladač mongodb. Doufám, že to pomůže.




  1. Jak atomicky odstranit miliony klíčů odpovídajících vzoru pomocí čistého Redis?

  2. Jak mohu používat regulární výrazy s Doctrine's Mongodb ODM?

  3. Přepsat objekt v mongodb

  4. Jak používat operátor $in v mongodb se dvěma poli v jazyce Java