У меня есть данные, которые возвращаются из GraphQL, я хотел бы проверить эти данные с помощью схемы JSON, прежде чем манипулировать ими.
Может быть лучший способ сделать это в graphQL, чем я сейчас, но возвращаемые данные могут быть двух типов с одинаковыми свойствами:
например упрощенная версия данных
obj: {
audio: {
artists: []
},
video: {}
}
or
obj: {
audio: {},
video: {
artists: []
}
}
Таким образом, достоверность будет:
- объект со свойствами
audio
иvideo
- объект с
audio
как объект со свойствомartists
и пустой объект свойстваvideo
- объект с
video
как объект со свойствомartists
и пустой объект свойстваaudio
- ни
audio
, ниvideo
не должны быть пустыми вместе - ни
audio
, ниvideo
не должны иметь вместе свойства
Я построил упрощенную схему, которая выглядит так:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "file://schemas/simple.schema.json",
"title": "simplified data",
"description": "simple",
"type": "object",
"properties": {
"audio": {
"type": "object"
},
"video": {
"type": "object"
}
},
"oneOf": [
{
"audio": {
"type": "object",
"properties": {
"artists": {
"type": "array"
}
}
},
"video": {
"type": "object",
"properties": {}
}
},
{
"audio": {
"type": "object",
"properties": {}
},
"video": {
"type": "object",
"properties": {
"artists": {
"type": "array"
}
}
}
}
]
}
но AJV, похоже, неправильно проверяет данные при запуске:
{
"audio": {
"artists": []
},
"video": {}
}
Что я мог сделать не так с моей схемой?