TL; DR: создайте свою собственную функцию 'errors ()'.
Возможно, вам уже удалось это изменить, но, как и я, у меня возникла та же проблема, и я нашел эту безответственную ветку.
Что ж, для будущих читателей отмечать ошибки () - это не что иное, как функция, точнее, эта:
(err, req, res, next) => {
// If this isn't a Celebrate error, send it to the next error handler
if (!isCelebrate(err)) {
return next(err);
}
const {
joi,
meta,
} = err;
const result = {
statusCode: 400,
error: 'Bad Request',
message: joi.message,
validation: {
source: meta.source,
keys: [],
},
};
if (joi.details) {
for (let i = 0; i < joi.details.length; i += 1) {
const path = joi.details[i].path.join('.');
result.validation.keys.push(EscapeHtml(path));
}
}
return res.status(400).send(result);
}
Там вы можете видеть, как объявляется объект ответа 'result' и как это делается. Таким образом, чтобы изменить его вывод, вы должны не использовать errors () и создать свою собственную функцию для ее обработки.
Итак, я объявил новую функцию:
private errorHandling = (err, req, res, next) => {
if (isCelebrate(err)) {
return res.send({
statusCode: 400,
message: err.joi.message
});
}
return next(err);
}
Очевидно, что вы можете изменить вышеперечисленное в соответствии со своими потребностями.
Затем вместо app.use(errors())
я использовал app.use(this.errorHandling)
, и теперь я получаю отформатированный ответ, как я хочу.