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

Multiple document in the same form with Meteor AutoForm

我有一些表单允许用户同时将多个文档添加到一个集合中,我想将其转换为使用 AutoForm,但我不知道如何做到最好。

例如,用户可以在学校创建一个class。 class 可以有姓名、学科和老师。而不是一次只添加一个 class 的表格,我有允许同时添加许多 class 的行。这是我添加 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>

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

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

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

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

这将为您生成一个表单,您可以在其中一次添加多个 类,但是它们将全部存储在一个文档中的 "classes" 数组下。这可能是对您的体系结构的不受欢迎的更改。因此,您可以扩展 autoForm 以拥有该功能,也可以坚持使用您的自定义解决方案。