{test:"123"}
validasi gagal karena tidak sesuai dengan skema apa pun di anyOf
, yang membutuhkan test1
atau test2
sebagai satu-satunya kunci.
anyOf
menerapkan setiap subskema ke instance Anda, dan menyatakan valid jika setidaknya salah satu subskema lolos validasi.
{test1: "123" }
gagal karena skema root additionalProperties: false
mencegah kunci apa pun di objek Anda yang tidak ditentukan dalam objek skema SAMA properties
atau patternProperties
.
Solusinya adalah dengan membuat beberapa duplikasi.
In THIS
contoh (tautan untuk pengujian browser tetapi hanya draft-7), saya telah menambahkan properti root test1
dan test2
. Ini akan memungkinkan data di mana Anda memiliki kunci test1
atau test2
untuk lulus, tetapi mengingat saya tidak tahu persyaratan Anda, saya tidak dapat memberi tahu Anda cara memodifikasi skema untuk mengizinkan objek dengan kunci test
untuk lulus (sebagai masing-masing dari anyOf
subskema mencegahnya).
{
"type": "object",
"additionalProperties": false,
"properties": {
"_id": {},
"test": {},
"test1": {},
"test2": {}
},
"anyOf": [
{
"type": "object",
"properties": {
"test1": {}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"test2": {}
},
"additionalProperties": false
}
]
}
Jika maksud Anda adalah untuk memeriksa apakah salah satu hal yang Anda masukkan memiliki test1
atau test2
, maka saya khawatir Skema JSON tidak dapat membantu Anda. Skema JSON dalam konteks Mongo hanya dapat memeriksa setiap item satu per satu, dan tidak memiliki kemampuan untuk memvalidasi kumpulan catatan yang berpotensi disisipkan.
Dalam skema contoh di atas, saya telah menghapus pemeriksaan tipe karena itu tidak relevan dengan pertanyaan ini, dan bsonType tetap berbeda dari tipe Skema JSON.