1

ユーザーが複数のドキュメントを同時にコレクションに追加できるようにするフォームがいくつかありますが、これを変換して AutoForm を使用するのが最善の方法ではありません。

たとえば、ユーザーは学校でクラスを作成できます。クラスには、名前、教科、教師を含めることができます。一度に 1 つのクラスだけを追加するフォームの代わりに、同時に多くのクラスを追加できる行があります。AutoForm を追加する前の簡単な例を次に示します。これにより、各行に名前、件名、教師の列を含む 3 つの行ができます。

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

クラスのスキーマを作成し、オートフォームを使用して一度に 1 つのクラスのフォームを作成することはできますが、オートフォームを使用して上記のように 1 つのフォームで複数のドキュメントを作成するにはどうすればよいですか?

[ここのコード例は大幅に簡略化されています。Select2 要素を使用して科目と教師を選択し、実際のコードにはさらに多くのフィールドと があります。また、行がいっぱいになると、自動的に行を追加します。この例は単純にして、後でこれらの問題に取り組みます]

4

1 に答える 1

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

これにより、一度に複数のクラスを追加できるフォームが生成されますが、それらはすべて「classes」配列の下の 1 つのドキュメントに格納されます。これは、アーキテクチャにとって望ましくない変更になる可能性があります。そのため、autoForm を拡張してその機能を持たせるか、カスタム ソリューションを使い続けることができます。

于 2015-04-21T00:08:40.347 に答える