res. json () не будет отправлять с res.status ()? - PullRequest
0 голосов
/ 21 июня 2020

У меня есть этот обработчик ошибок, который возвращает определенные c сообщения об ошибках в зависимости от того, что происходит. Но дело в том, что когда я запускаю свою функцию обработчика ошибок с помощью .catch (), она будет работать, если я вхожу в консоль узла, но когда я попытаюсь отправить ее клиенту через res. json (), она отправит только код состояния, а не какая-либо часть моего обработчика ошибок. Я помещаю туда сообщение basi c вместо errorHandler, и он все равно его не отправит. Я могу сделать ТОЛЬКО res. json, и это отправит ошибку. Но с res.status и res. json в цепочке это не сработает. res.send также имеет тот же результат, что и res. json.

function errorHandler(error){
  if (error.name === 'SequelizeValidationError') {
    const errors = error.errors.map(err => err.message);
    return errors;
  } else {
    throw error;
  }
}
router.post('/create', async(req, res) => {
     await Movie.create(req.body)
      .then(() => res.json("Movie Created"))
      .catch( err => res.status(401).json(errorHandler(err)) );
  });

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

Я пробовал это, рекомендовал другой пользователь.

function errorHandler(error, cb){
  if (error.name === 'SequelizeValidationError') {
    const errors = error.errors.map(err => err.message);
     cb(errors);
  } else {
    throw error;
  }
}


router.post('/create', async(req, res) => {
     await Movie.create(req.body)
      .then(() => res.json("Movie Created"))
      .catch( err => {
              errorHandler(err, function(errors){
                   res.status(401).json(errors);
               });
      });
  })

Это сработало. не работают, к сожалению.

Я тоже пробовал это

function errorHandler(error){
  if (error.name === 'SequelizeValidationError') {
    const errors = error.errors.map(err => err.message);
     return errors;
  } else {
    throw error;
  }
}


router.post('/create', async(req, res) => {
     await Movie.create(req.body)
      .then(() => res.json("Movie Created"))
      .catch( err => {
            const error = errorHandler(err);
             res.status(401).json(error);
      });
  }) 

Все они отправляют только код ошибки 401, но не мое собственное сообщение об ошибке? Как я могу отправить сообщение об ошибке клиенту?

Спасибо!

...