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

Postman与Insomnia发送POST请求时无法传递嵌套JSON数据问题咨询

你提交的Postman配置截图如下:
Postman

问题原因

这个问题和Mongoose Schema无关,因为客户端侧POST请求运行正常,说明数据写入逻辑和结构定义没有问题,问题出在API测试工具的请求格式和服务端Body解析规则不匹配,最常见的触发场景是:

  • 你在Postman/Insomnia中使用的是x-www-form-urlencoded格式发送嵌套数据
  • 服务端Express的express.urlencoded中间件的extended参数为默认值false,该模式下仅支持解析扁平结构的键值对,嵌套对象和数组会直接被丢弃
  • 近期如果有升级Express版本,4.16.0及之后版本内置的urlencoded中间件extended默认值为false,旧版本部分配置可能默认为true,升级后就会出现兼容问题
解决方案
  • 方案1:修改服务端Body解析配置
    将express.urlencoded的extended参数设置为true,即可支持解析嵌套结构的表单数据:
    // 替换你原有的urlencoded中间件配置
    app.use(express.urlencoded({ extended: true }));
    // 保留原有的json解析中间件即可
    app.use(express.json());
    
  • 方案2:修改API测试工具的请求格式
    在Postman/Insomnia的请求Body选项中,选择raw格式,子格式选择JSON,直接发送标准JSON结构的请求体,即可绕过urlencoded的解析限制,示例请求体:
    {
      "username": "test_user",
      "age": "25",
      "name": [
        {
          "firstName": "John",
          "lastName": "Doe",
          "middleIn": "A"
        }
      ],
      "programs": [
        {
          "programName": "Computer Science"
        }
      ],
      "email": "test@example.com"
    }
    
验证方法

可以在服务端对应的POST路由最前面加一行日志打印req.body,如果打印结果中已经包含完整的嵌套数据,说明解析配置已经生效,后续写入Mongoose的逻辑会正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:48:00