Tôi tạo nhiều truy vấn mongoDB trong vòng lặp. và muốn gửi tất cả các kết quả dưới dạng một mảng dữ liệu. Nhưng khi tôi đơn giản sử dụng trả về để gửi dữ liệu, nó đơn giản trả về không xác định và không đợi kết quả của tất cả các yêu cầu DB. Tôi cũng đã cố gắng sử dụng q.moulde nhưng cùng một vấn đề.Sự cố trong dữ liệu trả về được truy xuất từ các truy vấn DB được gọi trong vòng lặp
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 được trả về xác định.
'q.moulde' là gì? – Bergi
lời hứa của nó. Tôi có thể loại bỏ nó, tôi đã cố gắng để giải quyết các prob vì vậy tôi đã cố gắng điều này –
chức năng của bạn 'getPrayerInCat()' không trả lại bất cứ điều gì hoặc trả lại bất cứ điều gì để gọi lại. Ngoài ra, sẽ hữu ích nếu bạn xóa các nhận xét khỏi mã của mình và cập nhật bài đăng của mình để bao gồm những gì đầu ra ngoại trừ của bạn. Và bạn nên trả lại 'deferred.promise; ', thay vì chỉ hiển thị nó? –