2016-06-24 7 views
1

オブジェクト:流星コレクション2文字列の配列と私は<a href="https://github.com/aldeed/meteor-collection2" rel="nofollow">collection2</a>で流星を使用していると私はこのようになりますアレー持っ

productTypes = ["string1", "string2", "string3", {Other: "test"}] 

本質的には、配列内の0〜7の文字列からどこにでもあるでしょうし、他の: 'テスト'が存在する場合とない場合があります。

私はそのケースを扱うスキーマを作ろうとしています。配列内に文字列とオブジェクトがあることを伝える方法はありますか?

私は

const residentSchema = new SimpleSchema({ 
    productTypes: {type: [String, Object], optional: true, blackbox: true}, 
}) 

を試みた。しかし、それは1つの文字列と1つのオブジェクトを期待していますので、それは明らかに動作しません。どのように私はこの仕事をすることができます誰も知っていますか?事前のおかげで

編集:

productTypes = {リスト:[ "文字列1"、 "文字列2"、 "string3が"]、その他:私は今、この形式でそれを格納しています

」テスト "}

が、私はこのようにスキーマを追加します。

const productTypeSchema = new SimpleSchema({ 
    list: {type: Array}, 
    other: {type: String} 
}) 

const residentSchema = new SimpleSchema({ 
    productTypes: {type: productTypeSchema}, 
}) 

私のアプリがクラッシュします。私が行リストを削除すると、{type:Array}それは問題ありません。

Is ArrayはSimpleSchemaの値として使用できるようになりましたか?

+0

また、私は{型:Array、ブラックボックス:真}を使用することはできません、なぜ誰もが説明できます?私はそれが私のアプリケーションを吹き飛ばすことを使用するたびに、私は紛失しているというコンセプトがあると思う。 – ruevaughn

答えて

1

collection2では、プリミティブの配列またはオブジェクトの配列を持つことができますが、混合配列はできません。ちょうどモデリングpovからそれは本当に乱雑です。

私はあなたがあなたの配列、代わりのリファクタリングお勧め:例えば

productTypes = ["string1", "string2", "string3", {Other: "test"}] 

を:

productTypes = { list: ["string1", "string2", "string3"], Other: "test"} 
+0

ありがとう、それは素晴らしいアイデアだ、私はすでにおそらくそれのようなことをする必要があると判断していた。それはとても難しかったので、私はそれがサポートされていない理由があると思った。 – ruevaughn

+0

ただ、productTypes = {list:["string1"、 "string2"、 "string3"]、Other: "test"}に切り替えることで、実際にコードをたくさん整理することになりました。もう一度ありがとう – ruevaughn

+0

また、私はそれを切り替えたので、Simple SchemaでArrayを宣言するのと同じ問題が発生しています。あなたはそれを見ることができますか?私の編集を参照してください。 – ruevaughn

関連する問題