0

错误信息:

“未捕获的错误:过滤掉不在架构中的键后,您的修饰符现在为空”

在 Meteor 中使用 autoform 和 collection2 和简单的模式。架构:

Injuries = new Mongo.Collection('injuries');

Rehab = new SimpleSchema({
  exercise: {
    type: String,
    label: "Rehab Exercise"
  },
  sets: {
    type: Number,
    label: "Sets"
  },
  duration: {
    type: Number,
    label: "Set Duration (in Minutes)"
  },
  date: {
    type: String,
    label: "Date of Rehab Exercise"
  },
  rehabnotes: {
    type: String,
    label: "Notes: i.e. 70% Intensity During Sprints",
    max: 200
  },
  injuryid:{
    type: String,
  }
});

Injuries.attachSchema(new SimpleSchema({
  player: {
    type: String,
    label: "Player",
    max: 50
  },
  injury: {
    type: String,
    label: "Injury"
  },
  notes: {
    type: String,
    label: "Notes",
    max: 200
  },
  injurydate: {
    type: Date,
    label: "Date of Injury",
  },
  rehab: {
    type: [Rehab],
    optional: true
  }
}));

以及模板中的表单代码:

 {{#autoForm collection="Injuries" schema="Rehab" id="insertRehabForm" type="update"}}
          <fieldset>

                {{> afQuickField name='exercise' options=options}}
                {{> afQuickField name='sets'}}
                {{> afQuickField name='duration'}}
                {{> afQuickField name='date'}}
                {{> afQuickField name='rehabnotes' rows=6}}

          </fieldset>
           <button type="submit" class="btn btn-primary">Insert</button>
                {{/autoForm}}

我可以使用主页上的自动表单很好地插入文档,在单个文档页面上使用此自定义表单,我在提交时收到错误。

我在提交之前设置了一个集合挂钩,但这看起来只是一个架构错误,也许Rehab我在原始架构上设置的数组Injuries搞砸了?我为此所做的搜索都是关于模式中的“类型”参数与预期的不匹配,但我在这里检查了这些,它们看起来不错。建议?

4

1 回答 1

1

根据 AutoForm 的文档:如果未设置属性,则该schema属性是必需collection的,但是,即使collection设置了 AutoForm 仍将使用提供的schema属性来生成(仅适用于 QuickForm)并验证表单(适用于 AutoForm 和 QuickForm)。

在您的情况下发生的情况是,由于提供了两个属性 (schemacollection),AutoForm 首先根据架构验证表单字段Rehab,当它成功时,它会尝试插入这些字段的值(练习、集合、持续时间、日期、rehabnotes)到您的Injuries收藏,它在自己的架构中没有这些键(它只有 player、injury、notes、injurydate 和 rehab

根据您的要求,似乎将 AutoForm 类型设置为update-pushArray是最好的解决方案。检查文档和使用示例

于 2016-03-02T04:56:21.130 回答