У меня есть запрос 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
});
});