在 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
我试图在将对象插入数据库之前使用 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