2017-03-13 52 views
0

我看到了與貓鼬非常不尋常的東西。我使用v4.8.1。保存在Mongoose中的嵌套對象不工作,但尚未通過驗證

我有一個叫做Gate的模式,它有一個名爲histGate的屬性。我想將數據保存的格式爲:

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

所以histGate將有物業「4」,「5」,「7」和值將是對象。

我的貓鼬架構是:

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; 
    }); 

它告訴我它已經保存。 gateDbhistGate具有「4」和「5」屬性。然而,當我看着Mongo數據庫時,它並沒有,它只有'4'屬性。當我查詢時,它只有'4'屬性。

所以貓鼬告訴我一切都很好,並且它已經保存了,但實際上並沒有。這是怎麼回事?我的模式錯了嗎?

編輯

如果我編輯一個屬性,它是一個字符串,它的工作原理。如果我編輯屬性是一個對象,它的工作原理。當我編輯包含嵌套對象的屬性,它不工作

編輯

它看起來像這樣的架構心不是可能與貓鼬和蒙戈,它必須是一個數組

編輯

看起來你可以擁有動態密鑰,例如'4','5'等創建一個貓鼬文檔時,但你不能編輯或添加更多。完全莫名其妙。

回答

0

問題詳述here

修正了:

gateDb.markModified('histGates'); 

保存之前。