Я использую ajv для проверки некоторых данных JSON перед их записью в базу данных. Данные моего запроса в основном выглядят так (в качестве примера):
документ:
"name": "John",
"id": "123-456-789"
Это передается валидатору ajv:
const validator: ajv.Ajv = this.getValidator();
validator.validate("Testschema.out", doc)
Так выглядит Testschema.out
{
"id": "Testschema.out",
"type": "object",
"allOf": [{
"$ref": "anotherId#/definitions/someDefinition"
},
{
"$ref": "Testschema"
}
]
}
Testschema содержит следующее:
{
"id": "Testschema",
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"name"
]
}
В то время как someDefinition содержит это:
{
"id": "anotherId",
"type": "object",
"definitions": {
"someDefinition": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
}
}
}
Однако проверка завершается неудачно, и я получаю сообщение об ошибке "data should NOT have additional properties"
. В частности, что-либо в схеме "anotherId" по какой-либо причине не проходит проверку. Если я добавлю свойство «id» в Testschema, тогда проверка пройдет.