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 }));
You can send an string instead of array and keep the extended
option in false.
From your front js:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
$.ajax("/send", {
data: { "strArr": fruits.join() },
type: "POST",
async: true,
......
From your server js:
router.post('/send', function(req, res) {
var fruits = req.body.strArr.split(",");
console.log(fruits); // This is an array
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With