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

そして私、私はDBへのバナナを格納する必要がなかったので、それは...

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

答えて

0

を、エラーがスローされます、私はこのための回避策を作成しました。別々にバナナを格納する必要がある場合は、オブジェクト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(); 
} 

をそして、それは動作しているようです。

関連する問題