4.6 Валидация JSON-схем
Коллекции могут быть настроены для проверки документов по JSON-схеме. Это позволяет требовать определённой структуры документов перед их вставкой или обновлением в коллекции. Вы указываете JSON-схему, как описано на http://json-schema.org. Проверка схемы выполняется сервером, который возвращает сообщение об ошибке, если документ в коллекции не соответствует заданной JSON-схеме. Для получения дополнительной информации о проверке JSON-схем в MySQL, см. . В этом разделе описывается, как настроить коллекцию для проверки документов по JSON-схеме.
Connector/J реализует проверку JSON-схем совершенно по-другому, чем модель, описанная в данном разделе. Подробности см. в разделе Проверка схем руководства разработчика MySQL Connector/J MySQL Connector/J Developer Guide.
Для включения или изменения проверки JSON-схемы вы предоставляете коллекции validation JSON-объект, подобный следующему:
{
validation: {
level: "off|strict",
schema: "json-schema"
}
}
Здесь validation — это JSON-объект, содержащий ключи, которые можно использовать для настройки проверки JSON-схемы. Первый ключ — это level, который может принимать значения strict или off. Второй ключ, schema, представляет собой JSON-схему, как определено на http://json-schema.org. Если ключ level установлен в значение strict, документы проверяются по json-schema при добавлении в коллекцию или, если они уже находятся в коллекции, при их обновлении некоторыми операциями. Если документ не проходит проверку, сервер генерирует ошибку, и операция завершается неудачно. Если ключ level установлен в значение off, документы не проверяются по json-schema.
Создание валидированной коллекции
Чтобы включить проверку JSON-схемы при создании новой коллекции, предоставьте JSON-объект validation, как описано выше. Например, чтобы создать коллекцию, хранящую значения долготы и широты, и потребовать валидацию этих значений как чисел:
JavaScript код MySQL Shell
var coll = schema.createCollection("longlang", {
validation: {
level: "strict",
schema: {
"id": "http://json-schema.org/geo",
"$schema": "http://json-schema.org/draft-06/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": ["latitude", "longitude"]
}
}
})Python код MySQL Shell
coll = schema.create_collection("longlang", validation={
"level": "strict",
"schema": {
"id": "http://json-schema.org/geo",
"$schema": "http://json-schema.org/draft-06/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": ["latitude", "longitude"]
}
})
JavaScript код Node.js
var coll = schema.createCollection("longlang", {
validation: {
level: "strict",
schema: {
"id": "http://json-schema.org/geo",
"$schema": "http://json-schema.org/draft-06/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": ["latitude", "longitude"]
}
}
})
C# код
var collOptions = CreateCollectionOptions() {
reuseExistingObject = false,
validation = Validation() {
level = ValidationLevel.Strict,
schema = "{\"id\": \"http://json-schema.org/geo\","
+ "\"$schema\": \"http://json-schema.org/draft-06/schema#\","
+ " \"description\": \"A geographical coordinate\","
+ " \"type\": \"object\","
+ " \"properties\": {"
+ " \"latitude\": {"
+ " \"type\": \"number\""
+ " },"
+ " \"longitude\": {"
+ " \"type\": \"number\""
+ " }"
+ " },"
+ " \"required\": [\"latitude\", \"longitude\"]"
+ " }"
}
};
var coll = schema.CreateCollection("longlang", collOptions);
Python код
coll = schema.create_collection("longlang", validation={
"level": "strict",
"schema": {
"id": "http://json-schema.org/geo",
"$schema": "http://json-schema.org/draft-06/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": ["latitude", "longitude"]
}
})
Изменение проверки коллекции
Вы можете изменить коллекцию, чтобы управлять проверкой документов по JSON-схеме. Например, вы можете включить или отключить проверку или изменить JSON-схему, по которой проверяются документы.
Для изменения проверки JSON-схемы коллекции предоставьте JSON-объект validation при вызове метода Collection.modify(). Например, чтобы отключить проверку JSON-схемы для коллекции, объект validation будет таким:
{
validation: {
"level": "off"
}
}
При изменении проверки JSON-схемы вы можете указать только опцию level, чтобы изменить только уровень проверки схемы. Например, передайте показанный выше JSON-объект, чтобы отключить проверку JSON-схемы. Это не повлияет на ранее указанную JSON-схему и не удалит JSON-схему из коллекции. В качестве альтернативы, вы можете изменить схему, передав только новый JSON-объект схемы.
© 2025 Oracle
Licensed under the GPLv2 License.