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

Mongoose写入MongoDB超时求助:无法创建fruitsDB及插入文档

解决Mongoose插入超时及fruitsDB未创建问题

核心问题分析

报错Operation fruits.insertOne() buffering timed out本质是Mongoose未能成功建立与MongoDB的连接,导致插入操作在缓冲队列中超时。结合你的环境,问题集中在MongoDB服务启动的权限/监听异常、Mongoose连接配置缺失、以及操作时序错误三个方向。


分步解决方案

1. 修复MongoDB服务的启动权限与监听验证

Fedora下默认MongoDB的运行用户是mongodb,直接用sudo启动会导致/var/lib/mongo目录文件权限变为root,引发后续读写或连接问题,同时需确认服务确实监听指定端口:

  • 停止当前MongoDB进程:
    sudo pkill mongod
    
  • 修复数据库目录权限:
    sudo chown -R mongodb:mongodb /var/lib/mongo
    
  • 以mongodb用户身份启动服务(避免权限冲突):
    sudo -u mongodb mongod --port 27000 --dbpath /var/lib/mongo --bind_ip 127.0.0.1
    
  • 验证端口监听状态:
    netstat -tulpn | grep 27000
    
    若输出显示mongod进程监听127.0.0.1:27000则正常,否则查看日志/var/log/mongodb/mongod.log排查启动失败原因。

2. 修正Mongoose连接配置与操作时序

你的代码存在两个关键问题:Mongoose 6.x已废弃useNewUrlParser等旧选项,且未等待连接成功就执行插入操作。修改代码如下:

const mongoose = require("mongoose");

// 添加连接状态监听,明确连接结果
mongoose.connect("mongodb://localhost:27000/fruitsDB")
  .then(() => console.log("MongoDB连接成功"))
  .catch(err => console.error("连接失败:", err));

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

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

// 等待连接建立后再执行插入
async function saveFruit() {
  try {
    const fruit = new Fruit({
      name: "Apple",
      rating: 7,
      review: "Pretty solid as a fruit."
    });
    await fruit.save();
    console.log("文档插入成功");
  } catch (err) {
    console.error("插入失败:", err);
  }
}

saveFruit();

3. 验证数据库与文档状态

MongoDB的show dbs仅显示包含数据的数据库,若插入成功但未显示,可通过Mongo Shell直接连接验证:

mongosh --port 27000

在Shell中执行:

use fruitsDB
db.fruits.find()

若能看到插入的Apple文档,说明数据库与集合已成功创建。


额外排查点

  • 若使用默认端口27017,需确认无其他MongoDB进程占用该端口;
  • 临时关闭Fedora防火墙测试连接:sudo systemctl stop firewalld(测试后建议重启防火墙);
  • Mongoose 6.x兼容MongoDB 4.2+,你的4.4.4版本符合要求,无需降级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:11:00