MongooseError: Operation `x.findOne()` buffering timed out after 10000ms

MongooseError: Operation `x.findOne()` buffering timed out after 10000ms

我正在使用 Discord.JS v13 进行分片,我正在使用 mongoose 作为数据库。 我在我的分片文件 (index.js) 中连接到猫鼬,而不是在 bot.js 中,因为我需要在那里使用它,但这不允许我从任何地方获取猫鼬的数据,但 index.js.我不知道为什么会发生这种情况,因为几天前一切都很好,而且我没有进行任何更改。

index.js(分片文件)

// .....Sharding Manager
const dbURI = process.env.DBURI;

const mongoose = require("mongoose");
// noinspection JSCheckFunctionSignatures
mongoose.connect(dbURI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

/models/user.js(架构文件)

const mongoose = require("mongoose");
const userinfo = new mongoose.Schema({
  UserID: {
    type: String || Number,
    required: true,
  },
  /** Whole schema **/
});

const MessageModel = (module.exports = mongoose.model("muser_userinfo", userinfo));

scommands/filters.js(我要使用的文件!)


const userinfo = require("../models/user.js");

const user_id = interaction.user.id;

const data = await userinfo.findOne({ UserID: user_id });
    if (!data) {
//....

错误

7|muser | MongooseError: Operation muser_userinfos.findOne()` buffering timed out after 10000ms 7|muser | at Timeout.<anonymous> (/root/Bots/muser/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:185:20) 7|muser | at listOnTimeout (node:internal/timers:559:17) 7|muser | at processTimers (node:internal/timers:502:7) 

我已经尝试了您可能想到的所有方法,使用 find() 而不是 findOne(),在连接时使用了 .then(),仔细检查了凭据以及什么不是!

ShardingManager 通常为每个分片生成一个进程(除非您另外指定)。如果您仅从分片文件连接到 Mongo 数据库,那么您的机器人客户端将无法访问它。

也尝试从客户端连接到您的 Mongo 数据库,这不会太重要,因为 Mongo 支持多个连接。

根据我使用 mongoose 的经验,它会因 internet 连接不足而抛出错误,但会查看其他文档。这是我发现的可以帮助你的东西

根据我的经验,当您的数据库未连接时会发生这种情况,请尝试检查以下内容 -

  • 您是否已连接数据库并且您正从您的代码指向相同的 url。
  • 检查您的 mongoose.connect(...) 代码是否正在加载。

我在 运行 来自我的终端的节点 index.js 和 mongoose 连接代码进入不同的文件时遇到了这个问题。在 index.js 中要求该 mongoose 代码后,它再次工作。 --@Abhishek Gangwar 的最大功劳