Javascript 循环中的嵌套mongodb查询
我有一个MongoDB查询,其中有一个foreach循环,它多次调用另一个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 {
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循环