Node.js中Mongoose实现POST请求未将数据存入MongoDB问题求助
问题解决:Mongoose仅存入_id和__v字段,请求体数据未写入
核心原因及解决方案
1. 缺少请求体解析中间件
Express框架默认不会自动解析JSON格式的请求体,导致req.body为空对象,创建文档时自然只有Mongoose自动生成的_id和__v字段。
修复步骤:
在你的Express入口文件(如app.js/server.js)中添加JSON解析中间件:
const express = require('express'); const app = express(); // 关键:添加此中间件解析JSON请求体 app.use(express.json()); // 挂载你的任务路由(示例路径,根据实际调整) const tasksRouter = require('./routes/tasks'); app.use('/api/tasks', tasksRouter);
2. 检查Postman请求配置
确保Postman的请求设置正确:
- 请求方法选择
POST - 请求URL与你的API路由匹配
- Headers中添加
Content-Type: application/json - Body选择
raw格式,下拉菜单选JSON,然后输入正确的请求体:{"name":"Drink Water", "completed":false}
3. 补充异步错误处理(可选但推荐)
为createTask函数添加错误捕获,避免未处理的异步异常导致服务器崩溃:
const createTask = async (req, res) => { try { const task = await Task.create(req.body); res.status(201).json({ task }); } catch (err) { res.status(400).json({ message: err.message }); } };
内容的提问来源于stack exchange,提问作者Kshitij Verma
相关产品推荐
相关产品推荐

