title: Parsing nested JSON using body-parser and express
body: <p>I have an iOS app which is sending a JSON packet to a webserver.  The webserver code looks like this:</p>
  
  <pre><code>var express = require('express');
  var bodyParser = require('body-parser');
  var mongoose = require('mongoose');
  var app = express();
  mongoose.connect('mongodb://localhost/test');
  
  var db = mongoose.connection;
  db.on('error', console.error.bind(console, 'connection error:'));
  db.once('open', function (callback) {
    console.log("MongoDB connection is open.");
  });
  
  // Mongoose Schema definition
  var Schema = mongoose.Schema;
  var LocationSchema = new Schema({
      X: Number,
      Y: Number,
      Orientation: Number,
      UserID: String,
      Time: String
  });
  
  // Mongoose Model definition
  var LocationsCollection = mongoose.model('locations', LocationSchema);
  
  // create application/json parser
  var jsonParser = bodyParser.json();
  
  // URL management
  app.get('/', function (req, res) {
      res.sendFile(__dirname + '/index.html');
  });
  
  app.post('/update', jsonParser, function (req, res) {
      if (!req.body) return res.sendStatus(400);
      else {
          console.log(req.body);
      }
  });
  
  // Start the server
  var server = app.listen(3000, function () {
    var host = server.address().address
    var port = server.address().port
    console.log('App listening at %s:%s',host, port)
  });
  </code></pre>
  
  <p>The key part is the app.post method which processes the incoming http request being sent from my iOS app.  At the moment, the method which prints the req.body to the console looks like this:</p>
  
  <pre><code>{ 
    datapoint_1:
     { timestamp: '2015-02-06T13:02:40:361Z',
       x: 0.6164286615466197,
       y: -0.6234909703424794,
       id: 'B296DF8B-6489-420A-97B4-6F0F48052758',
       orientation: 271.3345946652066 },
    datapoint_2:
     { timestamp: '2015-02-06T13:02:40:961Z',
       x: 0.6164286615466197,
       y: -0.6234909703424794,
       id: 'B296DF8B-6489-420A-97B4-6F0F48052758',
       orientation: 273.6719055175781 }
  }
  </code></pre>
  
  <p>So, you can see the request is a nested JSON object.  Ideally, I'd like to loop through the request objects (ie. the datapoints) and insert those into the mongoDB database (via mongoose).  However, I can't seem to figure out how to do much of anything with the req.body.  I can't seem to create a loop to iterate through the request or how to properly parse the nested JSON file so it matches the mongoose schema.  Can anyone provide some guidance on how to insert these datapoints into the mongoose database?</p>