Meteor - check()VS用于验证.publish()参数的新SimpleSchema()

Ale*_*ier 2 meteor simple-schema

为了确保我的出版物接收的参数类型,我应该使用SimpleSchema还是check()

Meteor.publish('todos.inList', function(listId, limit) {
  new SimpleSchema({
    listId: { type: String },
    limit: { type: Number }
  }).validate({ listId, limit });

  [...]
});
Run Code Online (Sandbox Code Playgroud)

要么

Meteor.publish('todos.inList', function(listId, limit) {
  check(listId, String);
  check (limit, Number);

  [...]
});
Run Code Online (Sandbox Code Playgroud)

MrE*_*MrE 6

check()允许您检查数据type,这是一回事,但有些限制.

SimpleSchema它更强大,因为它检查文档中的所有键(而不是一次一个),并且不仅可以定义type允许的值,还可以定义允许的值,在不存在时定义默认(或动态)值.

你应该这样使用SimpleSchema:

mySchema = new SimpleSchema({ <your schema here>});

var MyCollection = new Mongo.Collection("my_collection");
MyCollection.attachSchema(mySchema);
Run Code Online (Sandbox Code Playgroud)

这样,您不需要在方法中检查架构:它将自动完成.当然,使用它总是很好的做法

mySchema.validate(document);

在将客户生成的文档插入集合之前验证它,但如果不这样,并且您的文档与模式不匹配(额外的键,错误的类型等...),SimpleSchema将拒绝不属于的部分.