2016-07-11 21 views
0

我宣佈以下型號存儲陣列:的MongoDB:型號

香蕉

var banana = new mongoose.Schema({ 
    src: { 
     type: String, 
     max: 1000, 
     default: "yabadaba" 
}); 

用戶

var user = new mongoose.Schema({ 
    name: String, 
    bananas: [banana] 
}); 

而且我插入數據用戶採集的問題。下面的代碼:

var data = [{ 
    name: "Batman", 
    bananas: [ 
     new banana({src: "nananana"}), 
     new banana({src: "nana"}) 
    ] 
}, { 
    name: "Robin", 
    bananas: [ 
     new banana({src: "meh"}) 
    ] 
}]; 

for(var i=0, arrLen=data.length; i<arrLen; i++){ 
    var item = new User(data[i]); 
    item.save(); 
} 

,我又把它拋出一個錯誤...

CastError: Cast to Array failed for value "..." at user.bananas. name: CastError, kind: 'Array', value: [Object], path: user.bananas, reason: [Object]

回答

0

,因爲我沒有需要存儲的香蕉DB,我創建了一個辦法解決這個。如果需要單獨存儲香蕉,則可以通過對象ID引用它們。

所以我刪除了香蕉模型和修改後的用戶模型如下。

用戶

var user = new mongoose.Schema({ 
    name: String, 
    bananas: [{ 
     src: { 
      type: String, 
      max: 1000, 
      default: "yabadaba" 
     } 
    }] 
}); 

我插入值如下:

var data = [{ 
    name: "Batman", 
    bananas: [ 
     {src: "nananana"}, 
     {src: "nana") 
    ] 
}, { 
    name: "Robin", 
    bananas: [ 
     {src: "meh"} 
    ] 
}]; 

for(var i=0, arrLen=data.length; i<arrLen; i++){ 
    var item = new User(data[i]); 
    item.save(); 
} 

而且它似乎是工作。