尽管有多个错误,但 AJV 只返回一个错误

Posted

技术标签:

【中文标题】尽管有多个错误,但 AJV 只返回一个错误【英文标题】:AJV return only one error although there is multiple 【发布时间】:2019-10-15 07:43:18 【问题描述】:

我正在尝试将 AJV 与以下代码一起使用,当我验证具有多个错误的对象时,AJV 一次只抛出一个错误。

const schema = 
    type: 'object',
    properties: 
      name: type: 'string', minLength: 1, maxLength: 1,
      sku:  type: 'string', minLength: 1, maxLength: 200,
    ,
    required: ['name', 'sku']
  

  const ajv = require('ajv');
  const validator = new ajv();

  const valid = validator.validate(schema, );

  if (!valid) 
    console.log(validator.errors);
  
该代码应该产生两个错误,因为 name 和 SKU 是必需的,但它只返回一个错误,请检查以下输出:

[  keyword: 'required',
    dataPath: '',
    schemaPath: '#/required',
    params:  missingProperty: 'name' ,
    message: 'should have required property \'name\''  ]

【问题讨论】:

【参考方案1】:

您需要为此设置配置。

如果您一次得到所有错误,那么您必须在创建 ajv allErrors: true 的对象时设置此对象参数

这里更新了代码。

const schema = 
    type: 'object',
    properties: 
        name: type: 'string', minLength: 1, maxLength: 1,
        sku:  type: 'string', minLength: 1, maxLength: 200,
    ,
    required: ['name', 'sku']


const ajv = require('ajv');
const validator = new ajv(allErrors:true);

const valid = validator.validate(schema, );

if (!valid) 
  console.log(validator.errors);

请查看此链接以获取更多配置参数。链接https://github.com/epoberezkin/ajv#options

【讨论】:

以上是关于尽管有多个错误,但 AJV 只返回一个错误的主要内容,如果未能解决你的问题,请参考以下文章

Amazon S3 - 尽管有 GetObject 限制,但返回 403 错误而不是 404

如何使用 AJV 创建自定义错误消息?

类型的 Ajv 自定义错误消息

尽管没有返回错误代码,但 PHP exec 命令无效

使用 ajv 验证 json 模式时获取错误类型/值

TypeError:Ajv 不是构造函数