1

我有一些表单允许用户同时将多个文档添加到一个集合中,我想将其转换为使用 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。此外,随着行填满,我会自动添加更多行。我保持这个例子简单,稍后会解决这些问题]

4

1 回答 1

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

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

于 2015-04-21T00:08:40.347 回答