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

Express中req.body返回null,Insomnia发POST请求触发username非空约束错误

问题根因

你的判断完全正确,问题确实是请求头缺少Content-Type: application/json导致的:
Express内置的express.json()中间件只有检测到请求携带Content-Type: application/json头时,才会将请求体的JSON内容解析到req.body对象上。缺少该头时req.body为undefined,你向createNewUser传入的req.body.username自然是null,触发了数据库users表的username字段非空约束报错。

修复步骤

1. 修复Insomnia请求配置(二选一即可)

  • 自动配置:在Insomnia的请求编辑页,切换到「Body」标签,确保下拉选项选择的是JSON而非Text/Form等其他格式,选择后Insomnia会自动在请求中添加Content-Type: application/json头
  • 手动配置:在Insomnia的请求编辑页,切换到「Headers」标签,手动新增一条表头:
    KeyValue
    Content-Typeapplication/json

2. 修复代码隐含的笔误

你提供的createNewUser函数存在拼写错误,会导致后续请求正常后仍报错:
原代码:

let { id } = results.row[0];

应修改为:

let { id } = results.rows[0];

(SQL查询返回结果存在results.rows数组中,原代码少了末尾的s,调用时会抛出未定义错误)

验证方法

修改完成后重新发送请求,查看终端打印的请求头会出现Content-Type: application/json,同时打印req.body可以看到正常解析后的username和password字段,即可成功插入用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:27:05