Проверка AJV - возможно ли получить значение свойства для другой проверки? - PullRequest
0 голосов
/ 26 сентября 2019

Я использую https://github.com/epoberezkin/ajv для проверки формы в моем проекте API Express.js.

Допустим, у меня есть этот объект перечисления:

const layout: {
    BUILDING: 'BUILDING',
    FLOOR: 'FLOOR',
    ROOM: 'ROOM',
},
const enums = {
  structure: {
    HOUSE: {
      type: layout.BUILDING
    },
    FLAT: {
      type: layout.FLOOR
    },
    ...
  }
}

, который используется в схеме AJV, какthis:

...
required: ["structure"],
properties: {
  structure: {
    type: "string",
    enum: Object.keys(enums.structure)
  }
}
...

и этот входной объект, который приходит из формы:

const form = {
  structure: 'BUILDING'
}

Мне нужно свойство floors или rooms или ничего, в зависимости от типаструктуры я получил , и я хочу сделать это по схеме AJV.Я знаком с if/then/else conditions и const, но мне нужно что-то немного отличное, если я не хочу жестко кодировать схему.

Мне нужно получить свойство structure внутри схемы AJV и сделайте это:

if(enums.structure[form.structure].type === types.BUILDING)
  // Require 'floors' and 'rooms' properties
else if(enums.structure[form.structure].type === types.FLOOR)
  // Require 'rooms' property
else
  // Do not require properties above

, но как эквивалент в схеме AJV.

Возможно ли это?

...