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

标签 meteor simple-schema

为了确保我的出版物收到的参数类型,我应该使用 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() 允许您检查数据类型,这是一回事,但有些限制。

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

您应该这样使用 SimpleSchema:

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

var MyCollection = new Mongo.Collection("my_collection");
MyCollection.attachSchema(mySchema);

这样,您就不需要检查方法中的架构:它将自动完成。 当然,使用

始终是一个好习惯

mySchema.validate(文档);

在将客户端生成的文档插入到您的集合中之前对其进行验证,但如果您不这样做并且您的文档与架构不匹配(额外的键、错误的类型等...)SimpleSchema 将拒绝不匹配的部分属于。

关于Meteor - check() VS new SimpleSchema() 用于验证 .publish() 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237023/

相关文章:

meteor 错误 : User Not Found

javascript - 对象数组的 SimpleSchema 验证

javascript - 如何使用AutoForm注册用户并登录?

meteor - 如何禁止 meteor 中非事件用户登录?

javascript - meteor 0.9.1.1 : How do I notify the client of progress when uploading a file?

javascript - 即使服务器/客户端位于同一时区,日期输入提要也是错误的

meteor - 简单模式有效值列表

javascript - Meteor 和 Mongo AND 标签过滤器

javascript - Meteor - 将投票添加到集合中的特定 ID

javascript - Meteor SimpleSchema 重复嵌套对象