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

Mongoose执行find()接口缓冲超时10000ms问题排查求助

排查解决思路
  • 检查wokcommands初始化执行时机

确保查询代码在wokcommands完全初始化完成后再执行,wokcommands提供了databaseConnected事件,你可以把这段查询逻辑放到该事件的回调函数内执行,避免逻辑执行早于数据库连接建立完成。

  • 校验mongoose连接状态
    在执行find()前插入调试代码确认连接状态:
console.log('Mongoose连接状态:', mongoose.connection.readyState)

返回值为1才代表连接已就绪,若返回值为2(连接中)时执行查询就会触发缓冲超时。

  • 检查模型注册与拼写
    你报错信息中的模型名为blacklistScema,注意拼写是否和你实际定义的blackListSchema完全一致,同时确认该模型是注册到了和wokcommands共用的同一个mongoose实例上,不要重复引入mongoose模块。
  • 排查多mongoose实例冲突
    执行命令查看当前项目中是否存在多个mongoose版本:
npm ls mongoose

若输出多个版本实例,说明wokcommands内置的mongoose和你手动安装的5.12.6版本冲突,wokcommands建立的连接是在内置mongoose实例上的,你自己引入的mongoose实例并未建立连接,就会触发缓冲超时。可直接卸载你手动安装的mongoose,统一使用wokcommands内置的版本即可解决。

  • 调整连接参数
    在wokcommands初始化传入mongo连接配置时,追加如下参数:
{
  useUnifiedTopology: true,
  bufferTimeoutMS: 30000,
}

延长缓冲超时时间,同时适配MongoDB新的拓扑结构。

  • 简化查询语法
    你当前代码混合了await和then两种异步写法,可调整为纯async/await写法排除语法层面干扰:
try {
  const data = await blackListSchema.find()
  if (data) {
    data.forEach((val) => {
      blacklistedWords.set(val.guild, val.words)
    })
  }
} catch (err) {
  console.error(err)
}
  • 检查数据库服务状态
    确认你的MongoDB服务运行正常,若使用云数据库(如MongoDB Atlas)需检查当前服务器IP是否在白名单内,没有被限制访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:54:03