2017-02-02 39 views
0

我无法通过json和mongoose将嵌套数组的内容保存到我的MongoDB中。 这是一个练习应用程序。这个想法是有一个Entry,包含几个回合(对象数组),其中又包含几个练习条目(对象数组)。嵌套数组的内容不会通过猫鼬保存到MongoDB中

猫鼬架构:

var ExerciseEntrySchema = mongoose.Schema({ 
"exercise_entries" : [ 
    { 
     "ex_name" : String, 
     "distance" : Number, 
     "distance_unit" : String, 
     "weight" : Number, 
     "ex_reps" : Number, 
     "cal" : Number, 
     "ex_time" : Number 
    } 
]}); 

var EntrySchema = mongoose.Schema({ 
    "wod_date" : Date, 
    "round_entries" : [ 
     { 
      "round_nr" : Number, 
      "exercise_entries" : [ExerciseEntrySchema] 
     } 
    ], 
    "entry_time" : Number, 
    "entry_rounds" : Number, 
    "entry_comment" : String 
}); 

我交的路线是这样的:

app.post("/entries", function (req, res) { 
    var newEntry = new Entry({ 
     "wod_date":req.body.wod_date, 
     "entry_comment":req.body.entry_comment, 
     "entry_time":req.body.entry_time, 
     "round_entries":req.body.round_entries, 
     "entry_rounds":req.body.entry_rounds}); 
    newEntry.save(); 
}); 

在后一个MongoDB的条目被保存,但exercise_entries-Array为空。我究竟做错了什么?

非常感谢

云母

+0

u能做到的console.log(req.body),并告诉我它显示。 –

+0

“{wod_date: '2017年2月2日', round_entries: [{round_nr: '1',exercise_entries:[对象]},{ round_nr: '2',exercise_entries:[对象]}], entry_time :'0', entry_rounds:'2', entry_comment:''}' – Mica

回答

0

在我看来,你有创建的锻炼项目数组的数组模式定义。在父条目模式中,您将创建一个round_entries数组,其中包含ExerciseEntrySchema对象数组,其中有一系列练习条目本身。我想你只需要简化你的模式定义,这样ExerciseEntrySchema就是只是一个条目的模式。下面是我会用什么:

var ExerciseEntrySchema = mongoose.Schema({ 
    "ex_name" : String, 
    "distance" : Number, 
    "distance_unit" : String, 
    "weight" : Number, 
    "ex_reps" : Number, 
    "cal" : Number, 
    "ex_time" : Number 
}); 

var EntrySchema = mongoose.Schema({ 
    "wod_date" : Date, 
    "round_entries" : [ 
     { 
      "round_nr" : Number, 
      "exercise_entries" : [ExerciseEntrySchema] 
     } 
    ], 
    "entry_time" : Number, 
    "entry_rounds" : Number, 
    "entry_comment" : String 
}); 

对于以上时,产生的样本文档应该是这样的:

{ 
    wod_date: '2017-02-02', 
    round_entries: [ 
     { 
      round_nr: '1', 
      exercise_entries: [ 
       { 
        "ex_name" : "Swimming", 
        "distance" : 1.5, 
       }, 
       { 
        "ex_name" : "Running", 
        "distance" : 0.5, 
       }, 
      ] 
     }, 
     { 
      round_nr: '2', 
      exercise_entries: [ 
       { 
        "ex_name" : "Running", 
        "distance" : 1.5, 
       }, 
       { 
        "ex_name" : "Running", 
        "distance" : 1.8, 
       }, 
      ] 
     } 
     ], 
     entry_time: '0', 
     entry_rounds: '2', 
     entry_comment: '' 
    } 
+0

啊是的。我对整个数组嵌套感到困惑。非常感谢@SylonZero为了解决这个问题。 – Mica