AJV Validation - добавить свойство по условным ссылкам на `не должно иметь дополнительных свойств` - PullRequest
0 голосов
/ 27 сентября 2019

В AJV я пытаюсь добиться этого:

properties: {
  structure_type: {
    type: "string",
    enum: ['A','B','C']
  },
}
if: {
  properties: {
    structure_type: {
      const: 'A'
    }
  }
},
then: {
  properties: {
    floors: {'$ref': "#/definitions/floors"}
  },
  required: ['floors']
},
required: ["structure_type"],
additionalProperties: false,

Мне требуется свойство floors, только если свойство structure_type равно A. Но я также не хочу разрешать свойство floors, когда свойство structure_type - это что-то, кроме A

По какой-то причине я получаю эту ошибку:

{
  "keyword": "additionalProperties",
  "dataPath": "",
  "schemaPath": "#/additionalProperties",
  "params": {
    "additionalProperty": "floors"
  },
  "message": "should NOT have additional properties"
}

для ввода:

{
  structure_type: 'A',
  floors: [*CONTENT_NOT_IMPORTANT*]
}

Кажется, AJV считает, что свойство floors не определено, но оно есть!(then tho)

РЕДАКТИРОВАТЬ: Я думал о not: {required: ["floors"]}, но даже это работает, это нарушает мою обработку ошибок.(Вместо additionalProperties ошибка, я получаю not ошибка)

...