2016-09-07 10 views
0

バリアントオプションをオブジェクトとして保存しようとしています: {'1':{optionTitle: 'title'、optionPrice:12}、 '2':{.... }} // スキーマmongodbにオブジェクトを保存する

RestMenuVariants.attachSchema(new SimpleSchema({ 
    restRefId: {type: String}, 
    createdBy:{type: String}, 
    title: {type: String}, 
    options: {type: Object}, 
    sortId: {type: String, optional: true}, 
    createdAt: {type: Date} 

})); 
方法addMenuVariantItemの

//一部

return RestMenuVariants.insert({ 
      restRefId: restId, 
      createdBy: Meteor.userId(), 
      createdAt: new Date(), 
      title: title, 
      options: options, 
      sort_id: sortId 
     }); 
オブジェクトを作成するforループイベントの

//一部

variantOptions[i] = {optionTitle: $(element).val(), optionPrice: $(elementPrice).val()}; 
} 

//および方法

Meteor.call('addMenuVariantItem', this._id, this.createdBy, variantTitle, variantOptions, function(error, result){.....}) 

呼び出す任意の小切手またはその他のエラーを取得する私は、バリアントが保存されていないが、私は、コンソールでアイテムを探したときに、私はオプションは空のオブジェクトであることを確認: // var cursor = RestMenuVariants.findOne({_ id:id}); //console.log(cursor.options)

Object {} 

私は何をしないのですか?おかげさまで

答えて

1

variantOptionsは配列として作成されていますが、スキーマはオブジェクトのみを必要としているようです。

変更:

あなたのスキーマ定義で
options: {type: [Object], blackbox: true }, 

options: {type: Object} 

オプションblackbox: trueは、オプション配列に入れられるオブジェクトの構造を無視するようにsimple-schemaに指示します。

配列は!=あなたの説明にあるように番号の付いたネストされたオブジェクトです。あなたは得ることはありません。

代わり
{ 
    '1': {optionTitle: 'title', optionPrice: 12}, 
    '2': {....} 
} 

あなたが表示されます:

[ 
    { optionTitle: 'title', optionPrice: 12 }, 
    {....} 
] 
関連する問題