У меня есть следующая конфигурация JSON в проекте typescript
. Я хотел бы проверить это на внешнем интерфейсе во время выполнения. Я ищу решение, подобное node-convict
.
Мне нужно проверить
- уникальный
id
/ Нет дублирующегося идентификатора. - уникальное имя.
- обязательное свойство не пусто
type
- Условно несколько дочерних типов, например, если type ===
folder
, они должны иметь children
prop. это может быть пустой массив. - Вложенные объекты на нескольких уровнях.
Я нашел AJV
. Документы AJV относятся только к целому объекту, который является уникальным, а не задает c свойств. Я мог бы придумать свой собственный и сделать некоторую рекурсивную проверку. Однако я ищу наиболее эффективное решение, будь то использование ajv, другой библиотеки или эффективной структуры данных, которую я мог бы использовать для проверки этого.
Если вы используете внешнюю библиотеку, она должна быть совместима с машинописью. Я НЕ ищу валидацию во время компиляции машинописи.
[{
"type": "folder",
"name": "",
"id": 1, // UUID
"chldren": [{
"id": 11, // UUID
"type": "table", // TABLE TYPE
"name": "Some Table 1",
"meta": {},
"dataSource": "..........."
},
{
"type": "folder", // FOLDER TYPE
"name": "",
"id": 111, // UUID
"chldren": [{
"type": "folder",
"name": "",
"id": 1111, // UUID
"chldren": [{
"id": 11111, // UUID
"type": "table",
"name": "Some Another Table",
"meta": {},
"dataSource": "..........."
}]
}]
}
]
}]