Я использую ноды экспресс и постресс.Я не уверен, является ли то, что я пытаюсь сделать, хорошей практикой или очень большой ошибкой.Сохраните данные в базе данных асинхронно после того, как я уже верну результат клиенту.
Я попытался продемонстрировать это с console.log, чтобы проверить, будет ли мой сервер заблокирован во время сохранения.
Здесь выможет видеть status
маршрут и statusB
маршрут.
app.get("/statusB", async (req, res) => {
return res.status(200).send("testAAA");
});
app.get("/status", async (req, res) => {
const userStats = await UserController.getData("id")
const x = test();
return res.status(200).send(userStats);
});
async function test() {
return new Promise(() => {
for (let x = 0; x < 10000; x++) {
setTimeout( () => {
console.log(x)
}, 5000);
}
})
}
Что я должен хотеть, это случиться, если я отправлю /status
и сразу после отправки statusB
.
Я ожидаювыходные данные будут:
/status
вернет данные userStats
/StatusB
вернет 'testAAA'
, и счетчик будет работать асинхронно.
Но фактический результат:
- /status
возврат данных userStats
- запуск счетчика
- /StatusB
возврат 'testAAA' только после завершения счетчика
Журнал консоли толькопроверьте, могу ли я извлекать и сохранять данные в базу данных асинхронно вместо журнала консоли.