Denn findOne
ist asynchron Funktion, eine Möglichkeit, von ihr zurückzukehren, ist durch 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);
})
Eine andere Möglichkeit besteht darin, Promise in findOne
zu erhalten
, wie dieses Dokument sagte, .exec()
gibt Ihnen ein vollwertiges Versprechen. Sogar mit Promise
, um Ihre Anforderung zu erfüllen, kann das Ergebnis über die Callback-Funktion zurückgegeben werden.
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);
});
};