2016-07-11 25 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(); 
} 

而且它似乎是工作。