#mongodb #express #mongoose
Вопрос:
для обработки исключений обещаний асинхронных операций mongoose я делаю так:
router.get("/", async (req, res) => {
try {
const user = await User.find().lean().sort("name");
res.send(user);
} catch (error) {
console.log("...faild");
res.status(500).send("something wrong");
}
});
но хотя контроль попадает в блок захвата и …сообщение об ошибке регистрируется в консоли, но ответ не получен в клиенте, и время ожидания подключения истекает, тогда, если я отправлю еще один повторяющийся запрос, я получу ответ с кодом 500!?
Я догадался, что это из-за задержки монго-получателя до появления ошибки подключения, и я проверил это, чтобы убедиться:
router.get("/", async (req, res, next) => {
try {
await (() => {
const p = new Promise();
p.reject("rejected");
})();
} catch (error) {
console.log("...faild");
res.status(500).send("something wrong");
}
});
затем ответ отправлен должным образом. почему это происходит и как я мог бы это исправить?