Running an Express API, I'm struggling to parse data including an array of objects correctly when hitting a POST route.
A simplified version of the code -
var express = require('express');
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');
var parseUrlencoded = bodyParser.urlencoded({ extended: false });
router.post('/', parseUrlencoded, function(req, res) {
console.log(req.body);
});
Hitting the API with the following
{ name: "Object name",
arrayOfObjects: [
{ name: "Sub Object Name", subType: "Sub Object Type" },
{ name: "Sub Object Name 2", subType: "Sub Object Type 2" }
]
}
Logs out
{ name: "Object name",
'arrayOfObjects[0][name]': "Sub Object Name",
'arrayOfObjects[0][subType]': "Sub Object Type",
'arrayOfObjects[1][name]': "Sub Object Name 2",
'arrayOfObjects[1][subType]': "Sub Object Name",
}
I would like to receive this as an array, which is the case when using a PUT request.
I'm sure this possible using a configuration of bodyParser or similar, but I'm struggling to find a good solution.
Ok, from your question I understand that you want to manipulate the POST Body like a json array then use qs library by making extended true
app.use(bodyParser.urlencoded({ extended: true }));