You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中传递对象ID数组至后端转为字符串的问题求助

解决FormData传递数组变为字符串的问题

问题根源在于:FormData直接append数组时会自动转为逗号分隔的字符串,且express.json()仅能解析application/json格式请求,无法处理multipart/form-data类型的FormData。以下是两种可行解决方案:

方案一:改用JSON格式发送请求

放弃FormData,直接以JSON格式传递数据,适配后端已配置的express.json()解析:

// 前端提交请求时的代码
fetch('/你的接口地址', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ package_ids }),
});

后端直接通过req.body.package_ids即可获取到数组,无需额外处理。

方案二:继续使用FormData,调整传递与解析逻辑

前端调整:逐个添加数组元素

不要直接将整个数组append到FormData,改为循环添加每个ID:

const formData = new FormData();
// 用[]后缀标识数组,确保后端能识别为数组类型
package_ids.forEach(id => {
  formData.append('package_ids[]', id);
});

后端调整:用multer解析FormData

  1. 先安装multer依赖:
npm install multer
  1. 配置并使用multer解析请求:
const multer = require('multer');
// 仅解析文本类型的FormData,不存储文件
const upload = multer();

// 在对应路由中使用upload.none()中间件
app.post('/你的接口地址', upload.none(), (req, res) => {
  // req.body.package_ids 直接就是数组格式
  const packageIds = req.body.package_ids;
  // 后续写入数据库的逻辑
});

如果无法修改前端代码,后端也可以手动将逗号分隔的字符串拆分为数组(注意:若ID包含逗号会出错,仅作为临时方案):

const packageIds = req.body.package_ids.split(',').map(id => id.trim());

内容的提问来源于stack exchange,提问作者John Oliver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:01:06