我正在使用ajv错误插件fastify为所需的属性抛出模式错误,但是每个错误都以'body‘作为前缀,然后是我的错误消息。是否有任何方法从错误中删除架构前缀?
示例:
body: {
type: 'object',
properties: {
title: {
type: 'string',
description: "The title of the thing",
},
required: ['title'],
errorMessage: {
required: {
title: 'BEEP BOOP TITLE NEEDED!',
},
},
},我的fastify配置:
const app = fastify({
ajv: {
customOptions: {
allErrors: true,
},
plugins: [(ajv) => AjvErrors(ajv, { singleError: false, keepErrors: false })],
},
});请求中缺少标题的预期错误:“BOOP标题需要!”
实际情况:“身体嘟嘟声需要标题!”
fastify: "4.1.0"
ajv-errors: "3.0.0"发布于 2022-07-21 04:55:59
你能做的是一个简单的技巧与法西斯;)
fastify.setErrorHandler(function (error, request, reply) {
// Log error
this.log.error(error);
const err = error;
if (error?.validation?.length) {
err.message = error.validation[0].message;
}
// Send error response
return reply.status(error.statusCode || 400).send(err);
});发布于 2022-07-21 06:51:19
const fastify = Fastify({
schemaErrorFormatter: (errors, dataVar) => {
// errors = ajv errors
// dataVar = `body` string
return new Error(myErrorMessage)
}
})https://stackoverflow.com/questions/73059684
复制相似问题