Как обрабатывать ошибки с помощью асинхронных в nodeJS? - PullRequest
1 голос
/ 06 ноября 2019

Я очищаю свой код и перехожу из ада обратного вызова в async / await и try / catch, но я все еще хочу сделать свой код СУХИМЫМ, так как у меня слишком много маршрутов и выполняет один и тот же перехват попытки в каждом запросе. Что может быть лучшим способом справиться с этим?

это мой пример кода на одном из маршрутов GET.

router.get('/customer', async (req, res, next) => {
    try {
        const customer = await Customer.find({}).populate('buisness').exec();
        return res.status(200).json({
            result: customer
        });
    } catch (e) {
        return next(e);
    }
});

сейчас, если я повторяю то же самое на каждом маршруте, он не следует за DRYкод. что может быть лучшим?

1 Ответ

5 голосов
/ 06 ноября 2019
const errorHandlerMiddleware = async (req, res, next) =>  {
  try {
    await next();
  } catch (err) {
    // handle the error here
  }
};
router.use(errorHandlerMiddleware);

router.get('/customer', async (req, res, next) => {
  const customer = await Customer.find({}).populate('buisness').exec();
  return res.status(200).json({
    result: customer
  });
});

используйте errorHandlerMiddleware перед всеми вашими маршрутами, это промежуточное ПО будет перехватывать каждое исключение, которое выбрасывается из ваших маршрутов. теперь каждый раз, когда в вашем маршруте возникает исключение, оно попадает в промежуточное ПО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...