如何使用对象填充Meteor autoform选项

时间:2017-04-20 17:18:52

标签: javascript meteor meteor-autoform simple-schema meteor-collection2

我为集合定义了一个简单的模式:

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"}
}

任何人都可以帮忙吗? 非常感谢提前!

1 个答案:

答案 0 :(得分:0)

在您的架构中,更改此

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

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