我正在使用$jsonSchema检查mongo层上的json模式验证。我需要定义一个多语言对象。我用$ref。但是我收到了错误-- $jsonSchema关键字'definitions‘目前不支持,因为它必须有一个常见的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模式作为一个单独的库吗?
发布于 2018-09-17 08:57:51
MongoDB只实现了一些JSON规范。
如果您希望确保数据库中的JSON数据始终有效,那么您似乎无法使用definitions,并且必须复制/粘贴您的模式部件。
另外,在将数据插入数据库之前,您可以使用JSON。但是,如果允许在不使用JSON的情况下写入数据库,则必须考虑数据库中可能没有有效数据(由模式定义)的含义。
在数据库层中使用JSON将自动进行验证,而在应用层上进行验证将要求您编写代码来完成您想要验证的每一种类型的事情。
https://stackoverflow.com/questions/52341519
复制相似问题