我在循环中进行多个 mongoDB 查询。并希望将所有结果作为一个数据数组发送。但是当我简单地使用返回来发送数据时,它只是返回未定义的并且不等待所有数据库请求的结果。我也尝试使用 q.moulde 但同样的问题。
代码:
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 返回未定义。