0

我有收集定义一个简单的模式流星自动窗体选项:如何填充对象

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 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})}; 
     }); 
    } 
    } 

一切都成功呈现的,但是当我点击提交我得到的校场,说

错误“你的学校必须是Object类型的”

我也尝试夫妇的重构,但没有任何工程。通常在选项下拉列表的“value”字段中,我们只放入一个字符串,数字等。但我想在这里传递一个对象(由帮助器返回) 对象看起来像。

{"name":"someSchoolName","region":"someRegion"} 

所以插入到Collection中的最后文件应该是这样的:

{ 
    "name": "John", 
    "school": {"name":"someSchoolName","region":"someRegion"} 
} 

任何人都可以请帮助呢? 非常感谢提前!

+0

在您的模式,试图改变这个' “学校$名字。”:{类型:字符串},“学校$ .region“:{type:String}'''school.name”:{type:String},“school.region”:{type:String}' – Abk

+0

@abk这是正确的答案。谢谢你的努力!请将此作为答案而不是评论,以便我可以标记它。 – Maciek

回答

0

在您的模式,改变这种

"school.$.name" : { type: String},"school.$.region" : {type: String}

"school.name" : {type:String},"school.region" : {type: String}