2017-03-13 8 views
0

Mongooseで非常に珍しいものを見ています。私はv4.8.1を使っています。Mongooseにネストされたオブジェクトを保存しても、まだ検証が行われていません

私はゲートと呼ばれるスキーマを持っていて、histGateというプロパティを持っています。 「7」、「5」、「4」だから、histGateプロパティを持つことになります

histGate:{ 
    '4': 
     { 
      gateName: 'G1' 
     }, 
    '5': 
     { 
      gateName: 'G5' 
     } 
    }, 
    ... 
    ... 

と値は、オブジェクトになります:私は形式でデータを保存したいです。

マイマングーススキーマは次のとおりです。

histGate: { 
    type: { 
     "gateName": {type: String 
    } 
} 

私は一度histGateするプロパティを保存することができ、私はモンゴでチェックするとき、私は以下を参照してください

'4': 
    { 
     gateName: 'G1', 
    }, 

しかし、その後、私は別のプロパティを保存しよう:

return Gate.findById(gateId) 
    .then(function(gateDb){ 

     gateDb.histGate['5'] = gate; 

     return gateDb.save() 
     .then(function(gateDb){ 
      console.log('saved and gateDb is ', gateDb); 
      return gateDb; 
     }) 
     .catch(function(err){ 
      console.log('err is ', err); 
      throw err; 
     }); 
    }) 
    .catch(function(err){ 
     console.log('err is ', err); 
     throw err; 
    }); 

これは保存されていると伝えます。 gateDbは '4'および '5'のプロパティを持つhistGateです。しかし、私がMongoデータベースを見ると、それは「4」のプロパティしか持たない。私が照会すると、それは「4」のプロパティしか持たない。

だから、Mongooseは私にすべてが上品で素敵で、保存されていると言っていますが、それは実際にはありません。どうしたの?スキーマが間違っていますか?

EDIT

私は文字列であるプロパティを編集した場合、それが動作します。オブジェクトであるプロパティを編集すると、そのオブジェクトは機能します。私はネストされたオブジェクトが含まれているプロパティを編集するとき、それは仕事をdoesnt

EDIT

それは、それは配列でなければなりませんマングースやモンゴで可能ありえないこのスキーマのように見えます

EDIT

ダイナミックキーを使用できるように見えます。 Mongoose文書を作成するときは '4'、 '5'などと入力しますが、編集や追加はできません。全く困った。

答えて

0

問題の詳細はhereです。保存する前に

gateDb.markModified('histGates'); 

:で固定

関連する問題