私には2つのフォームと2つのスキーマがあり、共通するものはありません。しかし、私はまだそれらを同じコレクションに保存する必要があります。autoformとcollection2を使用して同じコレクションに複数のスキーマをアタッチする
例:.:
schema1 = new SimpleSchema({ field1, field2, field3 });
collection.attachSchema(schema1);
schema2 = new SimpleSchema({ fieldX, fieldY, fieldZ });
collection.attachSchema(schema2);
Collection2 documentationから、上記の方法は、実際には単一の大きなスキーマにスキーマの両方をマージすることが理解されます。これは、両方のフォームが両方のスキーマに属するすべてのフィールドを持つ必要があることを意味します。
これは、私はauto1にschema1だけを持たせることはできず、もう一つのautoformにschema2だけを持たせることができないことを意味します。
ドキュメントごとに、私はreplace:trueを実装しようとしました。これにより、毎回スキーマが上書きされます。 (少なくとも、これは私がそれを理解する方法である - 彼らは大きなスキーマにマージされません)
例:
schema1 = new SimpleSchema({ field1, field2, field3 });
collection.attachSchema(schema1, {replace: true});
schema2 = new SimpleSchema({ fieldX, fieldY, fieldZ });
collection.attachSchema(schema2 {replace: true});
上記それでも問題が解決しないと、どういうわけか、スキーマがまだマージされます。つまり、fieldXが満たされるような規定がなくても、FieldXがautoform1で空白であることが通知されます。
また、バリエーションを使用する他のアプローチも試しました。
私は上記を実装する場合例:。:
schema1 = new SimpleSchema({ field1, field2, field3 });
collection.attachSchema(schema1, {selector: {type: 'forForm1'}});
schema2 = new SimpleSchema({ fieldX, fieldY, fieldZ });
collection.attachSchema(schema2, {selector: {type: 'forForm2'}});
は、私は複数のスキーマを扱うときにドキュメントへの引数が渡されなければならないことを言ってオートフォームのエラーを取得します。
これはどのように正確に行いますか?
ドキュメントを明記した:
を今すぐ両方のスキーマが取り付けられています。ドキュメントに「 'simple」という種類のドキュメントを挿入すると、 SimpleProductSchemaに対してのみ検証されます。文書に「variant」というタイプの文書を挿入すると、 VariantProductSchemaに対してのみ検証されます。
私はdoc = ????をどのように渡す必要があるか分からないテンプレート内の誰かが私を導くことができますか?
これは私のオートフォームテンプレートです:
をForm1:
{{#autoForm collection = "pgTemplates" type ="insert" doc= ???? id ="InsertForm1" }}
{{#each afFieldNames}}
{{> afQuickField name=this.name options = afOptionsFromSchema }}
{{/each}}
のForm2:
{{#autoForm collection = "pgTemplates" type ="insert" doc= ???? id ="InsertForm1" }}
{{#each afFieldNames}}
{{> afQuickField name=this.name options = afOptionsFromSchema }}
{{/each}}