2017-05-22 1 views
0

サブームが配列として機能するようにしようとしていますが、これは私の問題を処理する正しい方法だと思いますが、間違っていると私を修正してください!私は、AutoFormパッケージによって提供されるBooksSchemaの例に基づいて、私の問題を示す簡単な作業例を提供します。私の例では、私はライブラリのコレクションを持っており、 'ライブラリ'オブジェクトのフィールドの1つは、図書館の本のコレクションであると考えられています。オートフォームをレンダリングしても、ブックコレクションに定義されている入力ラベルは表示されませんが、空のテキスト入力フィールドは1つだけ表示されます。AutoForm、SimpleSchemaの配列項目としてのサブスキーマ

スキーマ:

import SimpleSchema from 'simpl-schema'; 
SimpleSchema.extendOptions(['autoform']); 

BooksSchema = new SimpleSchema({ 
    title: { 
    type: String, 
    label: "Title", 
    max: 200 
    }, 
    author: { 
    type: String, 
    label: "Author" 
    }, 
    copies: { 
    type: Number, 
    label: "Number of copies", 
    min: 0 
    }, 
    lastCheckedOut: { 
    type: Date, 
    label: "Last date this book was checked out", 
    optional: true 
    }, 
    summary: { 
    type: String, 
    label: "Brief summary", 
    optional: true, 
    max: 1000 
    } 
}, { tracker: Tracker }); 

LibrariesSchema = new SimpleSchema({ 
    collection: { 
    type: Array 
    }, 
    'collection.$': { 
     type: BooksSchema, 
     minCount: 1 
    } 
}); 

LibrariesSchema.extend(BooksSchema); 


Libraries = new Mongo.Collection("libraries"); 
Libraries.attachSchema(LibrariesSchema); 

オートフォーム:

{{> quickForm collection="Libraries" id="insertBookForm" type="insert"}} 

本当に長い時間が今のためにこれで苦労して、あなたの時間を事前にありがとうございました!特定の種類の

+0

2つのスキーマを結合するには、extendを使用する必要があります。例: '' 'MainSchema.extend(SubSchema);' '' – blueren

+0

@bluerenありがとうございます。私はこの 'extend'(編集された質問を参照)を含めるようにコードを更新しましたが、残念ながら私には何の変更もありませんでした。 – WalterB

答えて

0
LibrariesSchema = new SimpleSchema({ 
    'books': { 
     type: [BooksSchema], 
     minCount: 1 
    } 
}); 

配列は、check()またはスキーマの定義で使用するために、例えば、[SomeType]として指定されています。 [String]、または[BooksSchema]を入力してください。

+0

ありがとうございました。残念ながら、あなたのコードを使用すると、次のエラーが表示されます。 'キャッチされていないエラー:書籍のフィールド定義が正しくありません:「タイプ」は配列ではない可能性があります。それを配列に変更してください。 '私が正しく理解していれば、これらの括弧は、AutoForms 6.0とcollection2-core以降は使用しないでください。例えば、 https://github.com/aldeed/meteor-simple-schema#combining-simpleschemas。再度、感謝します! – WalterB

+0

私が言ったことはもはや真実ではないかもしれません。私は以前のプロジェクトにSimpleSchemaを使用しましたが、これはもう少し前です。 –

関連する問題