Я использую 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.
Возможно ли это?