将python包JSONSCHEMA扩展到mongodb的bsonType



我想使用JSONSCHEMA来验证mongodb模式。MongoDb使用"bsontypes"而不是"types"。我试过这个代码,但它不起作用。你能帮我吗?我的代码基于此建议:https://github.com/Julian/jsonschema/issues/586#issuecomment-525259765

import jsonschema
from jsonschema import Draft7Validator
from bson import ObjectId
def is_objectId(checker, instance):
return isinstance(instance, ObjectId)
type_checker = Draft7Validator.TYPE_CHECKER.redefine("objectId", is_objectId)
CustomValidator = jsonschema.validators.extend(Draft7Validator, type_checker=type_checker)
CustomValidator.VALIDATORS["bsonType"] = Draft7Validator.VALIDATORS["type"]
schema =  {
"bsonType": "object",
"properties":{
"scan":{
"bsonType": "object",
"required": ["code"],
"properties":{
"code": {
"bsontype" : "string"
},
"device": {
"bsonType": "int"
}
}
}
}
}
dic = { 
"scan" : {
"code": "hello",
"device": 34
} 
} 
CustomValidator.validate(dic,schema)

看起来您调用validate不正确。尝试:

validate( dic, schema, CustomValidator)

然而,要使其发挥作用,您必须为正在使用的所有bsonType值添加验证器——下面的示例只在需要objectstringint的地方添加了objectId

最新更新