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

使用Postman发送POST请求时state、city、street字段控制台输出为undefined

问题原因及解决步骤

你遇到的问题90%以上是Postman请求体的参数结构和代码解构逻辑不匹配导致的,具体排查和解决方法如下:


1 优先排查Postman请求配置

  • 先确认Postman的请求格式:Body标签页选择raw,下拉格式选择JSON,错误选择form-data/x-www-form-urlencoded且没配置对应解析中间件会导致嵌套字段读取异常。
  • 检查你的请求JSON结构:如果你把state、city、street三个字段嵌套在address对象中传输,比如:
{
  "name": "测试用户",
  "email": "test@test.com",
  "password": "123456",
  "mobileno": "13000000000",
  "address": {
    "state": "广东省",
    "city": "深圳市",
    "street": "科技园路"
  }
}

你当前代码直接从req.body顶层解构三个地址字段,必然返回undefined,因为这三个字段实际存储在req.body.address下。


2 两种解决方案

方案A:适配嵌套传参结构(推荐,符合字段语义)

修改路由中的解构逻辑,先取出address对象再提取内部字段,增加空值兜底避免报错:

// 替换原有的解构代码
const { name, email, password, mobileno, address } = req.body;
const { state, city, street } = address || {};

你的后续User实例创建逻辑和Schema定义完全匹配,不需要额外修改。

方案B:修改Postman传参结构

如果不想改代码,直接把三个地址字段提到JSON顶层,和name、email等字段同级传输即可:

{
  "name": "测试用户",
  "email": "test@test.com",
  "password": "123456",
  "mobileno": "13000000000",
  "state": "广东省",
  "city": "深圳市",
  "street": "科技园路"
}

3 额外排查项

  • 确认express项目已经配置JSON解析中间件,入口文件中需要存在app.use(express.json())配置,未配置的话req.body默认是空对象,无法读取参数。
  • 确认Postman中三个地址字段的拼写、大小写和代码中完全一致,拼写错误也会导致取值为undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:04