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

Mongoose findOne на модела връща ли обещание?

Защото findOne е асинхронен функция, един начин да се върнете от нея е чрез callback функция

module.exports.isAdmin = function(user_id, callback) {
  var params = {'roles': 'admin'};

  dao.findOne(params, function(err, user) {
    if (err) {
      logger.error(err);
      callback && callback(false);
    }
    if (_.indexOf(user.roles, 'admin') != -1) {
      logger.info("admin user: " + user._id);
      if (user._id == user_id)
          callback && callback(true);
    }
    callback && callback(true);
  });
};

isAdmin(userId, function(v) {
    console.log(v);
})

Друг начин е да получите Promise в findOne , както каза този документ, .exec() ви дава пълно обещание. Дори и с Promise , за да отговори на вашите изисквания, резултатът може да бъде върнат чрез функция за обратно извикване.

module.exports.isAdmin = function(user_id, callback) {
  var params = {'roles': 'admin'};

  var queryPromise = dao.findOne(params).exec();
  queryPromise.then(function(user) {
      if (_.indexOf(user.roles, 'admin') != -1) {
        logger.info("admin user: " + user._id);
        if (user._id == user_id)
          callback && callback(true);
      }
    }, function(err) {
      callback && callback(false);
  });
};



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да взема само статии с коментари, създадени преди 20 минути?

  2. Как да заредите данни в MongoDB, работещ в хост, от вътрешността на Docker, работещ на същата машина?

  3. Поточно предаване на резултати от заявка с родния mongoDB драйвер за възел

  4. Променете и пуснете отново MongoDB oplog

  5. Защо има долна черта пред идентификатора на документа MongoDb?