簡體   English   中英

在循環中嵌套 mongodb 查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM