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

Mongoose查询超时求助:users.find()缓冲超时10000ms

解决MongooseError: Operation users.find() buffering timed out after 10000ms问题

问题场景

开发小型消息类项目时,后端使用Mongoose从MongoDB获取数据,触发报错:

MongooseError: Operation users.find() buffering timed out after 10000ms

控制台明确显示数据库已成功连接,排查模型代码无异常后,发现User模型的导入位置是问题根源,将其调整到代码内部后问题解决。

问题原因

Mongoose模型需要绑定到已初始化完成的数据库连接上。原代码在调用mongoose.connect()之前就导入了User模型,此时Mongoose还未完成数据库连接,模型会关联到未就绪的连接池,后续执行User.find()时,操作无法正常发送到数据库,最终触发缓冲超时。

解决方法

将User模型的导入语句,移到数据库连接完成之后的代码逻辑中,确保模型加载时Mongoose已经建立好数据库连接。

修正后代码

后端代码

const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const http = require("http");

const app = express();

app.use(cors());
app.use(express.json());
app.use(express.static("public"));

const server = http.createServer(app);
const io = require("socket.io")(server, {
  cors: {
    origin: ["http://localhost:5173"],
  },
});
const db = "link";

async function toMongoose() {
  try {
    await mongoose.connect(db);
    console.log("Connected");
    // 在连接成功后导入User模型
    const User = require("../models/user");
    
    // 定义查询路由
    app.get("/get-users", async (req, res) => {
      try {
        const users = await User.find();
        res.json(users);
      } catch (err) {
        res.status(500).json({ error: err.message });
      }
    });
  } catch (err) {
    console.log(err);
  }
}

toMongoose();

io.on("connection", (socket) => {
  console.log(socket.id);
  socket.on("sending-message", (message) => {
    socket.broadcast.emit("receive-message", message);
  });
});

server.listen(3000, () => {
  console.log(`Server running on http://localhost:3000`);
});

模型代码(无需修改)

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const userSchema = new Schema({
  username: {
    type: String,
    required: true,
  },
});

const User = mongoose.model("User", userSchema);
module.exports = User;

补充说明

如果项目路由较多,建议将路由逻辑拆分到单独文件中,在数据库连接成功后再统一挂载路由,既避免单个文件代码冗余,也能保证所有模型都关联到已就绪的数据库连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:47:22