首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$jsonSchema如何使用$ref

$jsonSchema如何使用$ref
EN

Stack Overflow用户
提问于 2018-09-15 04:23:47
回答 2查看 983关注 0票数 2

我正在使用$jsonSchema检查mongo层上的json模式验证。我需要定义一个多语言对象。我用$ref。但是我收到了错误-- $jsonSchema关键字'definitions‘目前不支持,因为它必须有一个常见的json模式行为。

代码语言:javascript
复制
 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模式作为一个单独的库吗?

EN

回答 2

Stack Overflow用户

发布于 2018-09-17 08:57:51

MongoDB只实现了一些JSON规范。

如果您希望确保数据库中的JSON数据始终有效,那么您似乎无法使用definitions,并且必须复制/粘贴您的模式部件。

另外,在将数据插入数据库之前,您可以使用JSON。但是,如果允许在不使用JSON的情况下写入数据库,则必须考虑数据库中可能没有有效数据(由模式定义)的含义。

在数据库层中使用JSON将自动进行验证,而在应用层上进行验证将要求您编写代码来完成您想要验证的每一种类型的事情。

票数 2
EN

Stack Overflow用户

发布于 2019-04-16 17:54:07

描述这里的JSON与在蒙戈中引入的jsonSchema相似,但并不相同。

在mongo文档的ommision部分,您可以看到不支持$ref

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52341519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档