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

为何请求体向服务端发送的参数值为undefined或null?

问题排查解决步骤
  • 优先级最高:确认你已注册JSON解析中间件
    90%的类似问题都是漏加这行代码,没有中间件的话Express无法解析POST请求里的JSON参数,req.body会返回undefined,三个提取字段都是空值,插入非空字段时会直接报错。
    请在所有路由定义的上方添加代码:
    // Express 4.16+ 版本内置解析中间件,直接用即可
    app.use(express.json())
    
    如果你用的是更早的Express版本,需要先安装body-parser包再引入:
    const bodyParser = require('body-parser')
    app.use(bodyParser.json())
    
  • 检查参数接收是否正常
    你可以在接口逻辑里加一行打印console.log(req.body),发起Postman请求后看控制台输出的三个字段值是否正确,确认Postman里传的参数键名(name/email/question)和你代码里提取的完全一致,没有大小写或者拼写错误。
  • 确认ClearDB连接配置正确
    检查Heroku后台配置变量里的ClearDB连接信息,有没有正确填入连接池的初始化参数,数据库名、用户名、密码、host地址不要写错。
  • 检查字段约束匹配度
    确认你传入的三个参数值的长度没有超过MySQL表对应字段的最大长度,比如name字段如果定义的是varchar(20),你传入超过20个字符的内容就会触发插入失败。
  • 建议优化错误返回逻辑
    你现在的代码只在控制台打印错误,前端收不到报错信息,可以改成把错误信息也返回,方便后续排查:
    pool.query("INSERT INTO customer_questions (name, email, question) VALUES (?,?,?)",
      [name, email, question], (err,result)=> {
          if (err) {
              console.log(err)
              // 返回错误信息和500状态码
              res.status(500).send('插入失败:' + err.message)
          }else {
              res.send('data sent')
          }
      }
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:57:02