У меня есть этот обработчик ошибок, который возвращает определенные 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, но не мое собственное сообщение об ошибке? Как я могу отправить сообщение об ошибке клиенту?
Спасибо!