这是我的简化收藏品&它的架构:
Comments = new Mongo.Collection('comments');
Comments.schema = new SimpleSchema({
attachments: {type: [Object], optional: true},
});
Comments.attachSchema(Comments.schema);
这是我的简化方法:
Meteor.methods({
postComment() {
Comments.insert({
attachments: [{type:'image', value:'a'}, {type: 'image', value:'b'}]
});
}
});
在调用方法之后,这是我在MongoDB中获得的文档:
{
"_id" : "768SmgaKeoi5KfyPy",
"attachments" : [
{},
{}
]
}
数组中的对象没有任何属性! 现在,如果我评论这一行:
Comments.attachSchema(Comments.schema);
再次调用该方法,插入的文档现在看起来是正确的:
{
"_id" : "FXHzTGtkPDYtREDG2",
"attachments" : [
{
"type" : "image",
"value" : "a"
},
{
"type" : "image",
"value" : "b"
}
]
}
我必须遗漏一些基本的东西。请赐教。 我使用的是最新版本的Meteor(1.2.1)。
答案 0 :(得分:1)
如果您有一个Object类型的键,那么该对象的属性也将被验证,因此您必须在架构中定义所有允许的属性。如果无法做到这一点,或者您不关心验证对象的属性,请使用blackbox:true选项跳过对象内所有内容的验证。
因此,您要添加blackbox:true为您的附件'选项。
Comments.schema = new SimpleSchema({
attachments: {type: [Object], optional: true, blackbox: true},
});