2017-02-02 66 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