[英]nested mongodb queries in a loop
我有一個 MongoDB 查詢,在其中,一個 foreach 循環調用另一個 mongodb 查詢幾次,並將查詢的結果推送到每個請求的數組中。 現在這是一個異步調用,這意味着下一行依賴於這個數組
res.status(200).send(services);
將被執行並在填充之前發送一個空數組。
代碼片段:
static async getServices(req, res) {
let event_id = req.params.id;
try {
let services = [];
await EventRepo.getEvent(event_id, (event) => {
event.services.forEach(service_id => {
ServiceRepo.getService(service_id, (service) => {
services.push(service);
});
});
await res.status(200).send(services);
});
} catch (exception) {
res.status(500).send(exception)
}
}
我希望在發送數組之前填充它,並且我不能將發送的響應嵌套在這個查詢中:
event.services.forEach(service_id => {
ServiceRepo.getService(service_id, (service) => {
services.push(service);
// Here for example
});
});
事實證明,for each 循環是問題所在,因為它在另一個 function 中的每次迭代中實例化一個 promise,即 for each 循環。 只需使用普通的 for 循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.