Fordi findOne
er asynkron funktion, en måde at vende tilbage fra den er gennem callback
funktion
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);
})
En anden måde er at få Promise i findOne
, som dette dokument sagde, .exec()
giver dig et fuldt udbygget løfte. Selv med Promise
, for at imødekomme dit krav, kunne resultatet returneres via tilbagekaldsfunktionen.
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);
});
};