返回从循环中调用的DB查询中检索的数据时发出的问题

返回从循环中调用的DB查询中检索的数据时发出的问题

我在循环中进行多个MongoDB查询。但是当我简单地使用返回来发送数据时,它只是返回未定义的结果,而不是等待所有DB请求的结果。我也试着用q.mode,但同样的问题。

代码:

var getPrayerInCat = function(data){
    var result ;
    var finalData = [];
    if(data.length >0){
             data.forEach(function(data2){
                 var id= data2.id;
                 Prayer.find({prayerCat:id},function(err,prayer){
                     var deferred = Q.defer()
                     if (err) { // ...
                         console.log('An error has occurred');
                         // res.send(err);
                         result= finalData = err                     } else {
                         if(!prayer){
                             // console.log(data2.id+'--0');
                             data2.prayersCount = 0;
                             result = deferred.resolve(finalData.push(data2))
                         } else {
                             // console.log(data2.id+'--'+prayer.length);
                             data2.prayersCount = prayer.length;
                             // console.log(prayer)
                             result =  deferred.resolve(finalData.push(data2))
                         } // else for data forward
                     }
                     deferred.promise;
                 })
                // deferred.resolve(finalData);

             })
             /*if(finalData.length > 0) { return finalData;}*/
        }}

未定义返回finalData。


叮当猫咪
浏览 652回答 3
3回答

莫回无

getPrayerCat(‘).然后(函数(数据){getPrayerInCat(数据)}).然后(函数(Data 2){sole.log(Data 2)})var getPrayerInCat=function(Data){var结果;var finalData=[];if(data.ength>0){var答应=data.map(GetPrayerCount);返回Q.all(许诺);} 
打开App,查看更多内容
随时随地看视频慕课网APP