Node.js+Mongoose实现CRUD时Postman发POST请求返回400错误
问题描述
基于Node.js搭配Mongoose实现简易CRUD功能时,使用Postman发送POST请求始终返回400 Bad Request错误,相关信息如下:
- Postman请求报错截图:

- userController.js 注册接口代码:
const registerUser = asyncHandler(async (req, res) => { const {name, email, password, phoneNumber} = req.body if(!name || !email || !password || !phoneNumber) { res.status(400) throw new Error('Please add all fields') } res.json({ message: 'Register user'}) })
- userModel 代码截图:

排查&解决方法
这个400报错是你写的字段非空校验逻辑触发的,说明接口运行时req.body里没有拿全name/email/password/phoneNumber四个字段,按以下顺序排查即可:
- 确认已配置请求体解析中间件
Express 4.16及以上版本必须在注册路由前添加以下两行中间件,否则请求携带的参数不会被解析到req.body对象中,所有字段读取出来都是undefined,直接触发缺字段的400错误:// 解析JSON格式请求体 app.use(express.json()) // 解析表单格式请求体 app.use(express.urlencoded({ extended: true })) - 检查Postman传参格式
- 如果用
raw模式传参,要确认右侧格式选项选中的是JSON,不要选Text/XML等其他格式,同时检查JSON语法正确,字段名和接口要求的四个字段完全一致,注意大小写不要写错。 - 如果用
form-data或x-www-form-urlencoded模式传参,要确认前面的urlencoded解析中间件已经开启,字段名拼写正确。
- 如果用
- 检查路由匹配
确认注册接口的请求方法是POST,请求路径和Postman里填写的路径完全一致,没有漏写路由前缀、路径拼写错误的问题。
内容的提问来源于stack exchange,提问作者Philippe Mallari
相关产品推荐
相关产品推荐

