【问题标题】:Json Schema AJV not: const: error message is obscureJson Schema AJV not: const: 错误信息不明确
【发布时间】:2018-03-04 02:29:14
【问题描述】:

在我的架构中使用not 时,我发现处理来自Ajv 的错误消息非常困难。在我的用例中,我想验证两个道具的价值不同。考虑这个例子:

schema.json

{
  "$schema": "http://json-schema.org/draft-06/schema",
  "properties": {
    "propA": {
      "type": "string"
    },
    "propB": {
      "type": "string",
      "not": {
        "const": {
          "$data": "1/propA"
        }
      }
    }
  }
}

数据

{ propA: 'foo', propB: 'foo' }

输出

[ { keyword: 'not',
    dataPath: '.propB',
    schemaPath: '#/properties/propB/not',
    params: {},
    message: 'should NOT be valid' } ]

错误消息告诉我not 被拒绝,但真正相关的信息是const 不满意。

有没有人有提示或解决方法,我如何才能获得此用例的有意义的错误消息?

【问题讨论】:

    标签: javascript json schema ajv


    【解决方案1】:

    “const”实际上是满足的,这就是“not”失败的原因。 错误对象包含数据和模式中的路径,并且使用“详细”选项它将包含对导致失败的数据和模式的引用;从这些你应该能够解释错误。

    【讨论】:

    • verbose 输出了这么多数据,实际上对于我的测试来说太冗长了。我使用自定义错误消息插件 (npm ajv-errors) 做到了。
    • 我也认为 ajv 错误是无法使用的。 @esp 一遍又一遍地声称,人们可以“解释”错误,找到信息,但是结构如此混乱,结构如此随机,对象和数组到处出现,却没有任何关于原因和的信息如何,我们无法知道会发生什么以及如何解析它。
    猜你喜欢
    • 2020-07-19
    • 2017-11-08
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多