Расширить пакет python JSONSCHEMA до bsonType из mongodb - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу использовать 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)
...