У меня есть маршрут, который извлекает список пользователей, а затем для каждого пользователя извлекает их заказы из базы данных. Я хочу, чтобы все запросы завершались до отправки ответа, но ответ отправляется до того, как будут прикреплены все заказы.
Вот упрощенная версия моего кода:
Код: Выделить всё
app.get("/users-with-orders", async (req, res) => {
try {
const users = await getUsers(); // returns array of users
users.forEach(async (user) => {
const orders = await getOrdersByUserId(user.id);
user.orders = orders;
});
res.json(users);
} catch (err) {
res.status(500).json({ error: "Something went wrong" });
}
});
Код: Выделить всё
getUsers()Проблема в том, что user.orders иногда отсутствует или пуст в ответе, из-за чего создается впечатление, что await внутри цикла не ждет.
Я думал, что использование await обеспечит завершение каждого запроса перед отправкой ответа, но это не похоже на случай.
Как правильно обрабатывать несколько асинхронных операций в цикле, чтобы все данные были полностью загружены перед отправкой ответа?
Подробнее здесь: https://stackoverflow.com/questions/798 ... se-queries
Мобильная версия