MERN栈POST请求后MongoDB返回仅含_id、__v的空白对象如何解决
问题排查结论
你的服务端代码存在一处配置遗漏,是导致该问题的直接原因:
- Express 默认不解析 POST 请求的 JSON 格式请求体,你的
server/index.js中没有添加对应的解析中间件,导致req.body为空,新建数据库文档时没有业务字段值,仅会返回MongoDB自动生成的_id和__v字段。
修复方案
修改 server/index.js 代码,在 app.use(cors()) 之后、路由注册之前添加 JSON 解析中间件:
app.use(cors()); // 新增下面这行 app.use(express.json()); app.use('/movements', movementRoutes)
验证方法
修复后可以在 createMovement 逻辑中打印 req.body 确认参数是否正常获取:
export const createMovement = async (req,res) => { // 新增打印,确认能拿到前端传递的 movementName、movementWeight 字段 console.log('接收参数:', req.body) const move = req.body; // 剩余原有逻辑... };
如果打印结果正常,调用POST接口就会返回你预期的完整字段,若仍有问题再排查前端请求的参数格式、字段名是否和Schema定义一致即可。
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

