首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajv和Ajv-错误

Ajv和Ajv-错误
EN

Stack Overflow用户
提问于 2022-07-21 01:20:12
回答 2查看 223关注 0票数 0

我正在使用ajv错误插件fastify为所需的属性抛出模式错误,但是每个错误都以'body‘作为前缀,然后是我的错误消息。是否有任何方法从错误中删除架构前缀?

示例:

代码语言:javascript
复制
body: {
    type: 'object',
    properties: {
      title: {
        type: 'string',
        description: "The title of the thing",
      },
    required: ['title'],
    errorMessage: {
      required: {
        title: 'BEEP BOOP TITLE NEEDED!',
      },
    },
  },

我的fastify配置:

代码语言:javascript
复制
const app = fastify({
    ajv: {
      customOptions: {
        allErrors: true,
      },
      plugins: [(ajv) => AjvErrors(ajv, { singleError: false, keepErrors: false })],
    },
  });

请求中缺少标题的预期错误:“BOOP标题需要!”

实际情况:“身体嘟嘟声需要标题!”

代码语言:javascript
复制
fastify: "4.1.0"
ajv-errors: "3.0.0"
EN

回答 2

Stack Overflow用户

发布于 2022-07-21 04:55:59

你能做的是一个简单的技巧与法西斯;)

代码语言:javascript
复制
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);

});
票数 0
EN

Stack Overflow用户

发布于 2022-07-21 06:51:19

schemaErrorFormatter选项

代码语言:javascript
复制
const fastify = Fastify({
  schemaErrorFormatter: (errors, dataVar) => {
    // errors = ajv errors
    // dataVar = `body` string
    return new Error(myErrorMessage)
  }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73059684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档