Issue beim Zurückgeben von Daten, die aus in der Schleife aufgerufenen DB-Abfragen abgerufen wurden

Ich stelle mehrere mongoDB-Abfragen in einer Schleife. und die alle Ergebnisse als ein Datenarray senden möchten. Aber wenn ich einfach die Rückgabe zum Senden der Daten verwende, gibt es einfach undefiniert zurück und wartet nicht auf die Ergebnisse aller DB-Anforderungen. Ich habe auch versucht, q.moulde zu verwenden, aber das gleiche Problem.

Code

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 wird undefiniert zurückgegeben.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage