如何获取mongoose find()的异步返回值?
在faqDao.js中(通过question从数据库中查询,返回doc):
var findByQuestion = exports.findByQuestion = function(query,callback){
Faq.findOne(query,function(err,doc){
if(err){
util.log('FATAL'+err);
callback(err,doc);
}
callback(null,doc);
});
}
//词库的模糊查询
exports.findFaqByQuestion = function(question,callback){
var query = {};
if(question){
query['question'] = new RegExp(question);
}
exports.findByQuestion(query,function(err,doc){
if(err){
util.log('FATAL'+err);
callback(err,doc);
}
util.log('doc:'+doc);
callback(null,doc);
});
}
在index.js中(服务器端)
function dealQuestion(question){
//TODO
需要在这里将question传到上面的函数中,在这里,我应该如何获得doc这个返回值???
return doc ;
}
查询find是异步执行的,return的结果都是undifined,在网上查,需要使用Promise,还是不太理解,不知道该怎么处理这个问题。
2 回复
var faqDao = require("faqDao.js");
faqDao.findFaqByQuestion(question,function dealQuestion(question){
//TODO
})
个人感觉这里promise 也不能"return出去" 不对可喷
你的find里callback不是已经拿到了数据吗?不要用同步的思维。
faqDao.findFaqByQuestion(question,function(data){
//the data is your doc.
});