2016-11-09 61 views
1

進出口使用這種架構mulikey陣列使用的NodeJS

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var ConfigSchema = new Schema({ 
    aaaa : String, 

    bbbb : String, 



    Stage: [{ 
     cccc : String, 
     dddd : String, 
     eeee : String, 

    }, {index: true}] 

}, { collection: 'Config' }); 

var ConfigModel = mongoose.model('Config', ConfigSchema); 
module.exports = ConfigModel; 

和html頁面正確地級即時得到價值如何保存在MongoDB中的mutikey數組值。不過,雖然分配值,存在一定的誤差,它只存儲的最後階段。(也就是說,它是覆蓋每一個for循環運行時間值) 這裏的代碼assiging值,CCCC的

var i = 0; 
    for (i = 0; i <= 1; i++) { 
     var addConfigModel = new ConfigModel(


      { 

       aaaa : objmodel.aaa.value, 

       bbbb : objmodel.bbb.value, 


       Stage: [{ 
         cccc : objmodel.Stage[i].ccc.value, 
         dddd : objmodel.Stage[i].ddd.value, 
         eeee : objmodel.Stage[i].eee.value, 
        }] 

      }); 

    } 

值,存儲在mongodb中的dddd和eeee只是最後一個數組值。 我的模式有問題嗎?如何在mongo中存儲每個階段的值?

回答

0

我不知道你正在使用MongoDB的正確

  • 當你在數據庫中創建一個新文檔使用new ConfigModel()
  • 當你試圖使用find my doc.update()
更新現有的文件

因此,您正在重新創建每個具有默認值的ConfigModule文檔並在數組中添加最後一個值。

所以我建議你優化一點點喜歡你的代碼:

var config = new ConfigModel() 
config.aaaa = objmodel.aaa.value 
config.bbbb = objmodel.bbb.value 
config.Stage = [0, 1].map((i) => { 
return { 
    cccc : objmodel.Stage[i].ccc.value, 
    dddd : objmodel.Stage[i].ddd.value, 
    eeee : objmodel.Stage[i].eee.value, 
} 
}) 
config.save(() => { 
// 
}) 

,這將這樣的伎倆

+0

這似乎也不錯。我通過將'stage'存儲爲一個數組來獲得結果,它早於對象。並直接分配它沒有子元素。即aaaa:objmodel.aaa.value, bbbb:objmodel.bbb.value, 階段:objmodel.Stage。謝謝。我也試試這個。 – nive

+0

很高興它幫助了nive –