Я новичок в Обещаниях и асинхронном / ожидаемом программировании, и я не уверен, что понял все правильно. Я создаю API в Nodejs, с Express, Mongoose и MongoDB. Я видел много учебников о том, как бороться с асинхронностью, но все они о проектах NodeJ, в которых маршрутизация и запрос БД находятся в одном файле. пример:
const asyncMiddleware = fn =>
(req, res, next) => {
Promise.resolve(fn(req, res, next))
.catch(next);
};
router.get('/users/:id', asyncMiddleware(async (req, res, next) => {
const something = await getSomethingFromDb({ id: req.params.id })
res.json(something);
}));
Однако для ясности я отделил маршрутизацию от контроллера, но у меня есть серьезные сомнения, что я сделал это правильно. Вот мой код:
router.js
const asyncMiddleware = fn =>
(req, res, next) => {
Promise.resolve(fn(req, res, next))
.catch(next);
};
router.get('/something/:id', asyncMiddleware(async (req, res, next) => {
const answer = await somethingController.findById(req, res, next)
}));
controller.js
exports.findById = async (req, res, next) => {
const something = await Something.findById(req.params.id).exec();
res.send(something);
};
Я пыталсяв console.log (), чтобы проверить, что печатается и что, но я понял, что из-за ожидающей части весь этот фрагмент кода будет ожидать завершения запроса. Это хорошо реализовано? Как я могу проверить это?
Версии: NodeJs v10.16.3 Mongoose v5.7.1