javascript - JSON 模式 + 相关 JSON 指针 : how to verify "confirm password" field

标签 javascript jsonschema ajv

这是我的 JSON Schema :

{
  "required": [
    "username",
    "password",
    "confirmPassword"
  ],
  "properties": {
    "username": {
      "minLength": 3,
      "type": "string"
    },
    "password": {
      "minLength": 6,
      "type": "string"
    },
    "confirmPassword": {
      "const": {
        "$data": "1/password"
      },
      "type": "string"
    }
  },
  "type": "object"
}

这是我的数据:

{
  "username": "abc",
  "password": "asdfasdf",
  "confirmPassword": "asdfasdf"
}

您可以将它们复制粘贴到 this online validator 中,看看会发生什么。

confirmPassword 字段验证失败并显示错误消息:

Value "asdfasdf" does not match const.

我相信我的 relative JSON pointer 有问题,但我不知道正确的语法是什么。

AFAICT,1/password 意思是“上一级,然后检查 password 属性”,但事实并非如此。什么是正确的语法?

我使用的具体实现是 AJV,它说它确实 support relative-JSON-pointers

最佳答案

原来唯一的问题是我忘记设置 $data optiontrue。例如

const ajv = new Ajv({
    allErrors: true,
    $data: true,
});

关于javascript - JSON 模式 + 相关 JSON 指针 : how to verify "confirm password" field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46349602/

相关文章:

json - 多个 If-Then-Else 未验证 JSON 模式

json - 如何添加具有默认值的 JSON 模式可选枚举项?

javascript - 类型的 Ajv 自定义错误消息

javascript - 单元测试错误 "Fatal error: write after end"

javascript - 操纵 JSX 元素的子集合

javascript - 如何制作灯箱? : concept

javascript - 如何将node.js连接到kerberos kafka集群

远程枚举的 JSON Schema 语法

node.js - AJV 使用 JSONPath 字符串验证架构