Схема JSON + относительные JSON-указатели: как проверить поле подтверждения пароля

Вот моя схема JSON:

{
  "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"
}

Вы можете скопировать и вставить их в этот онлайн-валидатор, чтобы посмотреть, что произойдет.

Поле confirmPassword не проходит проверку с сообщением об ошибке:

Значение asdfasdf не соответствует константе.

Я считаю, что возникла проблема с моим относительным указателем JSON. но я не могу понять, каков правильный синтаксис.

AFAICT, 1/password означает «подняться на один уровень, а затем проверить свойство password», но, похоже, это не так. Какой правильный синтаксис?

Конкретная реализация, которую я использую, — это AJV, в котором говорится, что поддерживает поддерживает относительные JSON-указатели.


person mpen    schedule 21.09.2017    source источник
comment
@Amy Спецификация, на которую вы ссылаетесь, предназначена только для абсолютных указателей JSON, не так ли?   -  person mpen    schedule 21.09.2017


Ответы (1)


Оказывается, единственная проблема заключалась в том, что я забыл установить для параметра $data значение true. например

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