流星里的MongoDB文档验证?
问题描述:
如何将一个办法这样做(https://docs.mongodb.com/v3.2/core/document-validation/):流星里的MongoDB文档验证?
db.createCollection("contacts",
{ validator: { $or:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
]
}
})
在此:
// database.js
import { Mongo } from 'meteor/mongo';
export const Test = new Mongo.Collection('Test');
感谢
答
首先需要在流星定义您的架构。
Lists.schema = new SimpleSchema({
name: {type: String},
incompleteCount: {type: Number, defaultValue: 0},
userId: {type: String, regEx: SimpleSchema.RegEx.Id, optional: true}
});
这个例子定义架构有一些简单的规则:
- 我们指定需要一个列表的名称字段必须是 字符串。
- 我们指定incompleteCount是一个数字,其在插入是 设置为0,如果不另外指明。
- 我们指定userId是可选的,必须是 看起来像用户文档的ID的字符串。
用模式验证文档非常简单。我们可以这样写:
const list = {
name: 'My list',
incompleteCount: 3
};
Lists.schema.validate(list);
在这种情况下,由于列表根据模式有效,所以validate()行将毫无问题地运行。然而,如果我们写:
const list = {
name: 'My list',
incompleteCount: 3,
madeUpField: 'this should not be here'
};
Lists.schema.validate(list);
随后的validate()调用将抛出一个ValidationError其中包含关于什么是错的列表文件的详细信息。
这是使用Aldeed的SimpleSchema软件包吗? – pizzae
它使用简单的模式,但不知道它是否是Aldeed的。您可以通过https://guide.meteor.com/collections.html阅读更多内容 –