Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的嵌套mongodb查询_Javascript_Node.js_Mongodb_Rest_Asynchronous - Fatal编程技术网

Javascript 循环中的嵌套mongodb查询

Javascript 循环中的嵌套mongodb查询,javascript,node.js,mongodb,rest,asynchronous,Javascript,Node.js,Mongodb,Rest,Asynchronous,我有一个MongoDB查询,其中有一个foreach循环,它多次调用另一个MongoDB查询,并将查询结果与每个请求一起推送到一个数组中。现在这是一个异步调用,这意味着下一行依赖于这个数组 res.status(200).send(services); 将执行,并在填充之前发送一个空数组 代码段: static async getServices(req, res) { let event_id = req.params.id; try {

我有一个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循环是一个问题,因为它在另一个函数的每次迭代中实例化了一个承诺,即for-each循环。只需使用普通for循环