MERN项目测试接口时Postman无法接收POST请求的name、position属性
排查解决步骤
- 首先检查Postman的POST请求配置:请求Body要选择
raw格式,格式下拉选择JSON,请求体正确填写{"name":"自定义名称","position":"自定义职位"},不要使用form-data/x-www-form-urlencoded格式发送请求,否则后端无法解析为JSON格式的参数。 - 检查项目入口文件(一般为server.js/app.js)是否配置了JSON解析中间件:Express v4.16.0及以上版本自带JSON解析能力,需要在注册路由前添加
app.use(express.json()),如果缺少该配置,request.body会是空对象,导致读取不到name和position参数,存入数据库的对应字段为空,自然不会在返回结果中展示。 - 可在
createAthlete方法中添加日志验证参数是否正确接收:新增console.log(request.body)代码,发送请求后查看后端控制台输出,如果打印结果为空对象,说明是上述两个环节的问题;如果能正常打印出name和position值,再往下排查。 - 检查Mongoose连接的数据库是否正确,确认没有连接到测试库/其他旧项目库,避免Schema不匹配导致字段丢失。
- 可以临时给Schema字段增加非空校验辅助定位问题:将Schema修改为如下形式,参数缺失时会直接返回报错,更容易定位根因:
const AthleteSchema = new mongoose.Schema({ name: { type: String, required: true }, position: { type: String, required: true } }, { timestamps: true });
内容的提问来源于stack exchange,提问作者Ciara J. Giron
相关产品推荐
相关产品推荐

