2017-02-02 1 views
0

Ich habe Probleme, den Inhalt eines verschachtelten Arrays über Json und Mungo in meine MongoDB zu speichern. Es ist eine Übung App. Die Idee ist, einen Eintrag zu haben, der mehrere Runden (Array von Objekten) enthält, die wiederum mehrere Trainingseinträge (Array von Objekten) enthalten.Der Inhalt eines verschachtelten Arrays wird nicht über Mongoose nach MongoDB gespeichert.

Mongoose Schemen:

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 
}); 

Mein Beitrag Route sieht wie folgt aus:

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(); 
}); 

auf Post ein MongoDB Eintrag gespeichert ist, aber das exercise_entries-Array ist leer. Was mache ich falsch?

Vielen Dank

Mica

+0

Can u tun console.log (req.body) und sagen Sie mir, was es zeigt . –

+0

‚{wod_date: '2017.02.02' round_entries: [{round_nr: '1', exercise_entries: [Gegenstand]}, { round_nr: '2', exercise_entries: [Gegenstand]}], ENTRY_TIME : '0', entry_rounds: '2', entry_comment: ''} ' – Mica

Antwort

0

Es scheint mir, dass Sie eine Schema-Definition haben, die ein Array von Arrays für die Übung Einträge erstellt. Im übergeordneten Entry-Schema erstellen Sie ein Array von round_entries mit einem Array von ExerciseEntrySchema-Objekten , die selbst über ein Array von Trainingseinträgen verfügen. Ich denke, Sie müssen nur Ihre Schemadefinitionen vereinfachen, so dass ExerciseEntrySchema nur das Schema eines einzelnen Eintrags ist. Hier ist, was würde ich verwenden:

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 
}); 

Für die oben ein resultierendes Beispieldokument würde wie folgt aussehen:

{ 
    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

Ah ja. Ich war verwirrt mit der ganzen Array-Verschachtelung. Vielen Dank @SylonZero für die Auflösung dieses ganzen Chaos. – Mica

Verwandte Themen