【发布时间】:2018-09-03 12:32:22
【问题描述】:
我有一个相当大的 json 架构。有问题的部分是模式中称为“翻译”的较小模式,它看起来像这样:
"translations": {
"bsonType": "object",
"patternProperties": {
"id": {
"bsonType": "string"
},
"^[a-z]{2}$": {
"anyOf": [
{
"bsonType": "object"
},
{
"bsonType": "array"
}
]
}
}
}
由正则表达式定义的对象包含更多属性(例如,称为“文本”的字段),数组是这些对象的数组,但我只留下了对理解结构很重要的部分。
我的问题是,当我针对此架构验证我的文件时,每个文件都失败了,但是当我从 anyOf 数组中的第一个对象中删除“bsonType”:“object”时,它可以正常工作。
我的所有文件都是这样的,翻译对象中至少有一个以正则表达式为键的对象是“对象”类型。所以我不明白为什么它会失败。
我使用 mongoDB 3.6.0。
下面是一个失败的文件示例:
"translations":{
"id":"12345",
"br":{
"text":"string1"
},
"en":{
"text":"string2"
},
"ja":[
{
"text":"string3"
},
{
"text":"string4"
}
],
"no":[
{
"text":"string6"
},
{
"text":"string7"
}
]
}
如果不清楚 - 问题是当模式在 anyOf 数组的第一个对象中使用 "bsonType": "object" 定义时,像这样的文件会失败,并且在我取消它时工作。 anyOf 数组的第二个对象中的 "bsonType": "array" 工作正常。
【问题讨论】:
-
能否提供一些NodeJS代码?
标签: json mongodb jsonschema