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

ExpressJs中req.body返回undefined 调用axios.patch删MongoDB数组数据异常

排查步骤

Postman请求正常说明后端接口逻辑本身没有问题,故障出在前端传参格式或请求头配置上,按以下步骤排查即可:

  • 核对前端deleteTask接口的传参格式
    调用接口时第二个参数必须是{task: 要删除的任务内容}的结构,不能直接传入任务字符串,也不能用data作为字段名。正确调用示例:
    // 错误示例1:直接传字符串
    deleteTask(id, '完成作业')
    // 错误示例2:字段名错误
    deleteTask(id, {data: '完成作业'})
    // 正确示例:使用task作为字段名包裹内容
    deleteTask(id, {task: '完成作业'})
    
  • 检查axios配置和后端解析中间件
    • 确认axios实例没有强制修改Content-Type请求头,发送JSON格式请求时请求头应为application/json,可以在浏览器开发者工具的Network面板查看对应PATCH请求的请求头和请求载荷,确认载荷内容符合预期结构
    • 确认后端入口代码已经添加JSON解析中间件,Express 4.16+ 版本内置解析中间件,无需单独安装body-parser:
    app.use(express.json())
    
  • 补全后端接口返回逻辑
    当前后端代码执行更新操作后没有返回响应,会导致前端请求超时,需要补充返回逻辑:
    export const deleteTask = async (req,res) => {
       const { id } = req.params;
       console.log(req.body);
       if(!mongoose.Types.ObjectId.isValid(id)) {
         return res.status(404).json(`Invalid ID`);
       }
       const updatedData = await TodoModels.findByIdAndUpdate(id,{$pull:{ task: req.body.task }},{ new: true });
       return res.status(200).json(updatedData)
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:45:04