与Meteor AutoForm在同一表单中的多个文档

时间:2015-04-20 18:47:03

标签: meteor meteor-autoform

我有一些表单允许用户在我想要转换为使用AutoForm的同时将多个文档添加到集合中,但我无法做到最好。

例如,用户可以在学校中创建课程。课程可以有名字,科目和老师。我没有一次只添加一个类的表单,而是允许同时添加多个类的行。这是一个简单的示例,在我添加AutoForm之前它的外观。这给了我三行,每行都有一个名称,主题和教师列。

<form class="class-form">
    <div class="table-row">
        <input type="text" name="name[]" placeholder="name">
        <input type="text" name="subject[]" placeholder="subject">
        <input type="text" name="teacher[]" placeholder="teacher">
    </div>
    <div class="table-row">
        <input type="text" name="name[]" placeholder="name">
        <input type="text" name="subject[]" placeholder="subject">
        <input type="text" name="teacher[]" placeholder="teacher">
    </div>
    <div class="table-row">
        <input type="text" name="name[]" placeholder="name">
        <input type="text" name="subject[]" placeholder="subject">
        <input type="text" name="teacher[]" placeholder="teacher">
    </div>

    <button type="submit">Save</button>
</form>

我可以为类创建一个模式,并使用AutoForm一次为一个类创建一个表单,但是如何使用AutoForm在一个表单中创建多个文档,如上所述?

[这里的示例代码已经简化了很多。它使用Select2元素来选择主题和教师,实际代码中有更多的字段和s。此外,当行填满时,我会自动添加更多行。我保持这个例子简单,稍后将解决这些问题]

1 个答案:

答案 0 :(得分:1)

我不确定是否可以在一个表单上插入多个文档,但是您可以在一个表单中添加子文档数组,例如:

ClassesCollection = new Mongo.Collection("classes");


ClassSchema = new SimpleSchema({
    name: {
        type: String
    },
    subject: {
        type: String
    },
    teacher: {
        type: String
    }
});


ClassesSchema = new SimpleSchema({
    classes: {
        type: [ClassSchema]
    }
});

ClassesCollection.attachSchema(ClassSchema);

这将为您生成一个表单,您可以在其中一次添加多个类,但是它们都将存储在&#34;类&#34;下的一个文档中。阵列。这可能是您的架构不受欢迎的变化。因此,您可以将autoForm扩展为具有该功能,或者坚持使用自定义解决方案。