@frontendo

Как сделать единую точку обработки ошибок в expressjs приложении?

Есть простое приложение на express построенное по принципам mvc, вот кусок кода из роутера

const router = require('express').Router();
const Auth = require('./controllers/AuthController');

router.post('/register', Auth.register);
router.post('/login', Auth.login);
router.post('/current-user', Auth.getCurrentUser);
router.post('/forgot-password', Auth.forgotPassword);
router.post('/reset-password', Auth.resetPassword);

module.exports = router;


Соответственно контроллер - это модуль, возвращающий объект с методами. В каждом методе есть обращение к моделям (пока от 1 до 3-х запросов), все построено на async/await

Вот к примеру один из методов

register: async (req, res) => {
    validator.checkEmail(req.body.email);

    if (!validator.errorLength)
      await validator.checkEmailNotExist(req.body.email);

    validator.checkPassword(req.body.password, req.body.password_confirm || '');

    if (validator.errorLength)
      return res.sendInputsErrors(validator.getAndCleanErrors());

    try {
      let user = await User.create({
        email: req.body.email,
        password: crypt.hash(req.body.password)
      });

      auth.sendSuccessAuthenticatedResponse(user, req, res);
    } catch (e) {
      res.sendServerError(e)
    }

    return true;
  }


Так вот, хотелось бы избавиться от этих вездесущих try...catch, я так понимаю, что теоретически этой конструкцией надо обернуть место вызова обработчика роута
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы