我为集合定义了一个简单的模式:
testReport = new SimpleSchema({
name : {
type: String,
label: "Your Name"
},
school : {
type: Object,
label: "Your School"
},
"school.$.name" : {
type: String
},
"school.$.region" : {
type: String
}
}, { tracker: Tracker });
Reports.attachSchema(testReport);
通过autoform使用此模式生成非常简单的表单,该表单保存到Reports集合中:
{{#autoForm collection=Collections.Reports id="form" type="insert"}}
{{> afQuickField name="name" }}
{{> afQuickField name="school" options=schoolOptions}}
<input type="submit" value="Submit">
{{/autoForm}}
一个简单的帮助器用于使用集合中的数据自动填充选项下拉列表:
schoolOptions: function () {
if (Meteor.userId()) {
Meteor.user().profile.schools)
return Meteor.user().profile.schools.map(function (c) {
return {label: c.name, value: JSON.stringify({ name: c.name, region: c.region})};
});
}
}
一切都成功呈现,但是当我点击提交时,我在学校字段上显示错误
&#34;您的学校必须属于Object&#34;
我确实尝试了几次重构,但没有任何效果。通常在&#34;值&#34;选项下拉字段我们只放一个字符串,数字等。但我想在这里传递一个对象(由助手返回) 该对象看起来像。
{"name":"someSchoolName","region":"someRegion"}
因此,插入Collection的最终文档应如下所示:
{
"name": "John",
"school": {"name":"someSchoolName","region":"someRegion"}
}
任何人都可以帮忙吗? 非常感谢提前!
答案 0 :(得分:0)
在您的架构中,更改此
"school.$.name" : { type: String},"school.$.region" : {type: String}
到"school.name" : {type:String},"school.region" : {type: String}