首页 > 解决方案 > 节点js服务器端的多字段输入请求

问题描述

我的前端请求表单请求给我这个

req.body {
  name: ["abc","ggg"],
  class: ["A","B"],
  bloodGroup: ["A+","B-"]
}

我尝试过我的代码来解决这样的问题

let arr = [];
req.body.name.forEach((item, index)=>{
  arr.push({
     name: item,
     class: req.body.class[index],
     bloodGroup: req.body.bloodGroup[index]
  })
})
return arr;

有没有像动态这样的其他方式,我只会传递我的请求,它会返回这些数据的对象

这是示例 req.body 每个键名、类、bloodGroup ex 中将有多个数据:

name ["a","b","c",...] so on...
class ["ab","bc","dc",...] so on...
bloodGroup ["a+","b+","c-",...] so on...

标签: javascriptnode.js

解决方案


我们可以在请求正文的第一个属性上做一个Array.map

然后我们在 req.body 上使用Object.entries并将其映射为仅返回每个索引的正确条目。然后我们使用Object.fromEntries()创建每个对象。

这意味着无论 req.body 上有多少属性,它们都会出现在结果对象上。

const req = { 
    body: {
      name: ["abc","ggg", "ccc"],
      class: ["A","B", "C"],
      bloodGroup: ["A+","B-", "C-"],
      height: [175, 182, 190]
   }
}

const arr = Object.values(req.body)[0].map((item, index) => {
    const entries = Object.entries(req.body).map(([key, properties]) => ([key, properties[index]]));
    return Object.fromEntries(entries);
});

console.log(arr);


推荐阅读