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

Vrátí mongoose findOne on model slib?

Protože findOne je asynchronní Jedním ze způsobů, jak se z ní vrátit, je callback funkce

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

Dalším způsobem je získat Promise v findOne , jak řekl tento dokument, .exec() vám dává plnohodnotný slib. Dokonce i s Promise , pro splnění vašeho požadavku může být výsledek vrácen prostřednictvím funkce zpětného volání.

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. Pymongo BSON Binary uložit a načíst?

  2. Upgrade na Ubuntu 15.04 z 14.10 přerušuje mongo - jak to opravit?

  3. Metoda instance Mongoose není definována

  4. Dotaz na datum pro příspěvky vytvořené za posledních 24 hodin