在 Meteor Simpleschema 中验证自定义对象

validating custom object in Meteor Simpleschema

我试图在将对象插入数据库之前使用 Meteor 中的 SimpleSchema 验证对象。

对象看起来像这样,因为我从调用插入的 Meteor 方法打印它:

channels: { '1': [ 'rect4557-6-4-5-7-4-2', 'rect4557-6-4-97-0-7-6-3' ] } }

如果我将它插入数据库而不附加架构,它可以正常工作。但是,当我通过 SimpleSchema 获得它 运行 时,custom 验证方法中 console.log 输出的字段值是一个空对象 {}。即使我不 运行 任何验证,如果使用 SimpleSchema,也会存储一个空对象。

生成简单模式值输出的代码:

Arch.schema = new SimpleSchema({   
    channels: {
    type: Object,
    custom: function validateChannels() {
      console.log("this.value:", this.value)
    } 
}); 
Architectures.attachSchema(Architectures.schema);

真的,我该怎么办?这是 SimpleSchema 中的错误吗?

看来您只需要添加 blackbox: true 选项即可。除非您将其标记为黑盒对象,否则 SimpleSchema 不支持任意对象键。参见 https://github.com/aldeed/meteor-simple-schema#blackbox

过滤是自动清理的一部分,可以为您去除这一点。如果你想在特定的 insert 调用中阻止它,只需传递 filter: false 选项。参见 https://github.com/aldeed/meteor-collection2#skip-removing-properties-that-are-not-in-the-schema