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

Mongoose操作fruits.insertOne()缓冲超时问题求助

解决MongooseError: Operation fruits.insertOne() buffering timed out after 10000ms错误

这个错误的核心原因是Mongoose尚未完成数据库连接就执行了数据写入操作,导致操作被缓冲后超时。以下是具体的解决步骤:

1. 确认MongoDB本地服务正在运行

如果本地MongoDB服务未启动,Mongoose无法建立连接,直接导致后续操作超时:

  • Windows:打开服务管理器,找到MongoDB服务并启动;或在命令行执行 net start MongoDB
  • macOS/Linux:通过brew services start mongodb-community(Homebrew)或systemctl start mongod(系统服务)启动服务

2. 等待连接成功后再执行数据操作

原代码中mongoose.connect是异步操作,直接调用fruit.save()时连接还未建立。需要通过异步语法确保连接完成后再执行操作:

方案一:使用async/await(推荐)

const mongoose = require("mongoose");

mongoose.set('strictQuery', false);

async function run() {
  try {
    // 等待连接成功
    await mongoose.connect("mongodb://localhost:27017/fruitsDB", {
      useNewUrlParser: true,
      useUnifiedTopology: true // 新增该参数,适配新版MongoDB驱动
    });
    console.log("数据库连接成功");

    const fruitSchema = new mongoose.Schema({
      name: String,
      rating: Number,
      review: String
    });

    const Fruit = mongoose.model("Fruit", fruitSchema);

    const fruit = new Fruit({
      name: "Apple",
      rating: 7,
      review: "Pretty good"
    });

    // 等待数据保存完成
    await fruit.save();
    console.log("数据已成功保存");

    // 操作完成后关闭连接
    await mongoose.connection.close();
  } catch (err) {
    console.error("操作失败:", err);
  }
}

run();

方案二:使用Promise的then/catch

const mongoose = require("mongoose");

mongoose.set('strictQuery', false);

mongoose.connect("mongodb://localhost:27017/fruitsDB", {
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(() => {
    console.log("数据库连接成功");

    const fruitSchema = new mongoose.Schema({
      name: String,
      rating: Number,
      review: String
    });

    const Fruit = mongoose.model("Fruit", fruitSchema);
    const fruit = new Fruit({name: "Apple", rating: 7, review: "Pretty good"});
    
    return fruit.save();
  })
  .then(() => {
    console.log("数据保存成功");
    return mongoose.connection.close();
  })
  .catch(err => console.error("操作失败:", err));

3. 检查连接参数适配

Node.js v18搭配的MongoDB驱动版本较高,建议在连接配置中添加useUnifiedTopology: true,确保连接逻辑适配新版驱动的拓扑管理机制。

内容的提问来源于stack exchange,提问作者Aman Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:24:58