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 的最大功劳
我正在使用 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 代码后,它再次工作。