$ jsonSchema, как использовать $ ref - PullRequest
0 голосов
/ 15 сентября 2018

Я проверяю проверку схемы JSON на слое Монго, используя $ jsonSchema.Мне нужно определить многоязычный объект.Я использую $ ref.Но я получаю сообщение об ошибке - $ jsonSchema ключевое слово 'определения' в настоящее время не поддерживается Согласно документации, оно должно иметь общее поведение json-схемы.

 async install(): Promise<void> {
        let db = await this.dbContainer.getDb();
        let properties = _.fromPairs(this.config.languages.map((language) => {
           return  [language, {$ref: '#/definitions/post'}]
        }));
        await db.createCollection(
            this.collectionName,
            {
                validator: {
                    $jsonSchema: {
                        bsonType: 'object',
                        required: ['title', 'summary', 'link'],
                        definitions: {
                            post: {
                                title: {
                                    bsonType: 'string',
                                    description: 'Title is required'
                                },
                                summary: {
                                    bsonType: 'string',
                                    description: 'Summary is required'
                                },
                                href: {
                                    bsonType: 'string',
                                    description: 'Summary is required'
                                },
                            },
                        },
                        properties,
                    }
                }
            }
        );

Есть ли у кого-нибудь какие-либопредложения?Должен ли я использовать JSON-схему в качестве отдельной библиотеки?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Схема JSON, как описано в спецификации здесь похожа, но не совпадает с jsonSchema, представленной в mongo .

В разделе ommision документации mongo вы можете видеть, что $ref не поддерживается.

enter image description here

0 голосов
/ 17 сентября 2018

В MongoDB реализована только часть спецификации схемы JSON.

Если вы хотите убедиться, что данные JSON в вашей базе данных всегда действительны, похоже, что вы не можете использовать definitions, и вам придется копировать / вставлять части схемы.

В качестве альтернативы, вы можете использовать схему JSON перед вставкой ваших данных в базу данных. Тем не менее, вы должны учитывать последствия отсутствия в базе данных действительных данных (как определено вашей схемой), если вы разрешаете запись в базу данных без использования JSON-схемы.

Использование JSON Schema на уровне базы данных автоматически выполнит проверку, в то время как проверка на прикладном уровне потребует от вас написания кода для этого для каждого типа объектов, которые вы хотите проверить.

...