我想从定义为的中间件返回一个布尔值
module.exports = {
authenticatepracticename: function(pname) {
ecollection.find({ $and: [{'name':pname},{'status' : 'active'}] }).exec(function (err, result) {
if (err) return false;
if(result.length == 1){
// console.log('true');
return true;
}
else{
// console.log('false');
return false;
}
});
},
// ...
}
我的快递控制器定义为
exports.checkcredentails = function (req, res) {
var result = practice.authenticatepracticename(practiceName);
}
但即使中间件函数被调用,结果也会出现undefined
。
答案 0 :(得分:0)
您从undefined
获得practice.authenticatepracticename
结果的原因是ecollection.find
执行异步操作而authenticatepracticename
结束而不返回任何值(undefined
在JavaScript中。)
为了改善这一点,您需要提供从checkcredentails
到authenticatepracticename
的回调函数。
示例:强>
exports.checkcredentails = function (req, res) {
practice.authenticatepracticename(practiceName, function(err, result){
// you can handle error and result here e.g. by sending them back to a customer
res.send("Result: " + result);
});
}
你的authenticatepracticename
:
authenticatepracticename: function(pname, cb) {
ecollection.find({ $and: [{'name':pname},{'status' : 'active'}] }).exec(function (err, result) {
if (err) return cb(err)
if(result.length == 1){
// console.log('true');
cb(null, true)
}
else {
// console.log('false');
cb(null, false)
}
});
}
我希望这会有所帮助。