Click here to Skip to main content
15,884,628 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I am trying to send array of object using form in express.js but It is sending array of each properties not the array of object as following.
JavaScript
"group": {
  "groupName": "Kai Hess",
  "user":{
      "name": [
        "fynetin",
        "rupemys",
        "robik"
      ],
      "id": [
        "6",
        "30",
        "18"
      ]
    }
}

But I want like this
JavaScript
"group": {
  "groupName": "Kristen Mayo",
  "user": [
    {
      "name": "gufem",
      "id": "53",
    },
    {
      "name": "bytybotar",
      "id": "68",
    },
    {
      "name": "copamyruk",
      "id": "59"
    }
  ]
}


I am using body-parser from express.
JavaScript
app.use(express.urlencoded({ extended: true }));


These are test routes to handle form request.
JavaScript
app.get('/test', function (req, res) {
  return res.render('test');
});

app.post('/test', function (req, res) {
  return res.json(req.body);
});


Here is my form.
HTML
<form action="/test" method="post">
    <input type="text" name="[group][groupName]"    placeholder="groupName">
    <br><br>
    <input type="text"   name="[group][user][name]"   placeholder="name-1">
    <input type="number" name="[group][user][id]"     placeholder="id-1">
    <br><br>
    <input type="text"   name="[group][user][name]"   placeholder="name-2">
    <input type="number" name="[group][user][id]"     placeholder="id-2">
    <br><br>
    <input type="text"   name="[group][user][name]"   placeholder="name-3">
    <input type="number" name="[group][user][id]"     placeholder="id-3">
    <br><br>
    <input type="submit" value="submit">
</form>


What I have tried:

I have tried several patterns like:
[group][user][name]
[group][user][][name]
[group][[user][name]]
[group][user][[name]]


Using indexes make it work but I don't want to use them because my form will be dynamic so rows can be added and removed. Like following.
[group][user][1][name]
[group][user][2][name]
Posted
Updated 14-Feb-21 1:45am
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900