MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Обратно извикване при операция на MongoDB с Node.js

Вие извиквате функцията за обратно извикване веднага, но отиването до db отнема време и следователно се извършва асинхронно. Вместо това извикайте вашето обратно извикване в подходящия момент, като използвате аргумента резултат на функцията, подадена като последен параметър на .findOne() функция. Обратното извикване трябва да получи аргумент за грешка и аргумент за резултат:

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

това просто изтегля същия модел, през който се използва драйверът mongodb. надявам се, че помага.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose aggregate Lookup - Как да филтрирате по конкретен идентификатор

  2. Могат ли строги JSON $dates да се използват в заявка на MongoDB?

  3. Ръководство за конфигуриране на Load Balancer в MongoDB Sharded Cluster

  4. Mongoose/Mongodb Aggregate - групиране и средно множество полета

  5. Mongodb агрегиращ тръбопровод как да ограничите групово натискане