无法通过Postman向MERN栈应用发送POST请求求助
问题分析与解决方案
这个超时错误Operation workouts.insertOne() buffering timed out after 10000ms本质是Mongoose无法连接到MongoDB数据库,和你提供的路由代码无关。Mongoose在数据库连接未建立时会缓冲操作,但超过10秒还没连上就会抛出这个错误。
排查与解决步骤:
确认MongoDB服务状态
- 本地MongoDB:打开终端执行
mongod,看服务是否正常启动;如果是MongoDB Atlas等云服务,登录控制台检查集群是否处于运行状态。
- 本地MongoDB:打开终端执行
修正数据库连接逻辑
确保主服务器文件(如server.js/app.js)里的连接代码正确,且必须在数据库连接成功后再启动服务器:const mongoose = require('mongoose'); const express = require('express'); const app = express(); // 先添加JSON解析中间件,否则无法读取Postman发送的JSON数据 app.use(express.json()); // 连接MongoDB mongoose.connect(process.env.MONGODB_URI) .then(() => { console.log('MongoDB连接成功'); // 连接成功后再启动服务 app.listen(3000, () => { console.log('服务器运行在3000端口'); }); }) .catch(err => { console.error('数据库连接失败:', err); }); // 导入并挂载路由 const workoutRoutes = require('./routes/workoutRoutes'); app.use('/api/workouts', workoutRoutes);验证连接字符串
- 本地数据库:连接字符串格式应为
mongodb://localhost:27017/你的数据库名称,确认端口(默认27017)和库名无误。 - 云数据库:检查连接字符串中的用户名、密码、集群地址是否正确,同时确认你的IP已加入云服务的IP白名单,数据库用户拥有读写权限。
- 本地数据库:连接字符串格式应为
重启服务
若以上配置都正确,尝试重启MongoDB服务和你的Express应用,有时连接缓存会导致异常。
内容的提问来源于stack exchange,提问作者Bilal Mohamadzadeh
相关产品推荐
相关产品推荐

