为了确保出版物可以接收的参数类型,应该使用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/

10-14 04:31