You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose操作MongoDB报fruits.insertOne()缓冲10000ms超时错误

报错根因

MongooseError: Operation fruits.insertOne() buffering timed out after 10000ms是Mongoose连接超时的典型报错:Mongoose默认会在数据库连接未建立时,将所有增删改查操作暂存在内存队列中等待连接就绪,如果10秒内没能成功连上MongoDB,队列里的操作就会直接抛出这个超时错误。

修复步骤
  • 第一步:确认本地MongoDB服务正常运行
    你当前代码连接的是本地27017端口的MongoDB实例,90%的同类问题都是因为本地MongoDB服务没启动:
    • Windows:打开任务管理器-服务面板,找到MongoDB服务确认状态为「正在运行」,也可以直接在管理员终端执行net start MongoDB启动服务
    • Mac/Linux:如果用Homebrew安装,执行brew services start mongodb-community启动服务
      启动服务后可以在终端执行mongosh命令,能正常进入MongoDB交互终端就说明服务本身没问题。
  • 第二步:修正连接代码,补全配置+等待连接就绪再执行操作
    你当前的连接代码缺少必要配置项,且没有等待连接完成就直接执行了save()操作,把代码改成如下形式:
const mongoose = require('mongoose');

// 补全新版本Mongoose要求的配置项,显式处理连接成功/失败逻辑
mongoose.connect('mongodb://127.0.0.1:27017/fruitsDB', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => {
  console.log('MongoDB连接成功');
  // 连接成功后再执行数据操作
  const fruitSchema = new mongoose.Schema({
    name: String,
    rating: Number,
    review: String
  });
  const Fruit = mongoose.model('Fruit', fruitSchema);
  const fruit = new Fruit({
    name: "Banana",
    rating: 7,
    review: "Much loved."
  });
  return fruit.save();
})
.then(savedDoc => {
  console.log('文档保存成功:', savedDoc);
  mongoose.connection.close(); // 操作完成后关闭连接
})
.catch(err => {
  console.error('执行出错:', err);
});

这里特意把localhost换成了127.0.0.1,部分Windows系统下localhost会默认解析到IPv6地址,也会导致连接失败。

  • 第三步:排查端口占用问题
    如果上面两步做完还是报错,执行netstat -ano | findstr 27017(Windows)或者lsof -i :27017(Mac/Linux),看27017端口是不是被MongoDB以外的程序占用,如果是就修改MongoDB配置的监听端口,同步修改连接串里的端口号即可。

内容的提问来源于stack exchange,提问作者83hru2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:21:42