为了确保出版物可以接收的参数类型,应该使用SimpleSchema还是check()
?
Meteor.publish('todos.inList', function(listId, limit) {
new SimpleSchema({
listId: { type: String },
limit: { type: Number }
}).validate({ listId, limit });
[...]
});
要么
Meteor.publish('todos.inList', function(listId, limit) {
check(listId, String);
check (limit, Number);
[...]
});
最佳答案
check()
允许您检查数据type
,这是一回事,但在一定程度上受到限制。SimpleSchema
功能更强大,因为它可以检查文档中的所有键(而不是一次检查所有键),并且不仅可以定义type
,还可以定义允许的值,并在不存在时定义默认(或动态)值。
您应该通过以下方式使用SimpleSchema:
mySchema = new SimpleSchema({ <your schema here>});
var MyCollection = new Mongo.Collection("my_collection");
MyCollection.attachSchema(mySchema);
这样,您无需检查方法中的架构:它将自动完成。
当然,使用
mySchema.validate(document);
在将客户端生成的文档插入集合之前先对其进行验证,但是如果您不这样做并且文档与架构不匹配(额外键,错误的类型等),SimpleSchema将拒绝不属于您的文档。
关于meteor - meteor 检查()与用于验证.publish()参数的新SimpleSchema()的比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37237023/