私はajvを使用して、データベースに書き込まれる前にいくつかのJSONデータを検証しています。私のリクエストデータは、基本的に(一例として)次のようになります。ajv validateが正しいスキーマで失敗する「データに追加のプロパティがありません」
DOC:
const validator: ajv.Ajv = this.getValidator();
validator.validate("Testschema.out", doc)
これはTestschema.outは
次のようになります。これは、AJVバリデータに渡される"name": "John",
"id": "123-456-789"
{
"id": "Testschema.out",
"type": "object",
"allOf": [{
"$ref": "anotherId#/definitions/someDefinition"
},
{
"$ref": "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"
}
}
}
}
}
しかし、検証が失敗した、と私は取得エラーが何らかの理由で「anotherId」スキーマで何かが検証に失敗した、具体的に"data should NOT have additional properties"
です。 Testschemaに "id"プロパティを追加する場所があれば、検証は成功します。