猫鼬连接抛出 MongooseServerSelectionError

Posted

技术标签:

【中文标题】猫鼬连接抛出 MongooseServerSelectionError【英文标题】:mongoose connection throwing MongooseServerSelectionError 【发布时间】:2020-06-10 16:43:33 【问题描述】:

我正在尝试通过 mongoose 驱动程序连接到我的 mongodb Atlas,但它不断抛出 MongooseServerSelectionError, 我已经检查了数据库用户的用户名和密码,并且是正确的。

这是我的代码:

server running on port 3000
we are connected:  MongooseServerSelectionError: connection timed out
    at new MongooseServerSelectionError (/home/ateyib/UCSD-classes/CSE 135/hw3/node_modules/mongoose/lib/error/serverSelection.js:22:11)
    at NativeConnection.Connection.openUri (/home/ateyib/UCSD-classes/CSE 135/hw3/node_modules/mongoose/lib/connection.js:808:32)
    at Mongoose.connect (/home/ateyib/UCSD-classes/CSE 135/hw3/node_modules/mongoose/lib/index.js:333:15)
    at Object.<anonymous> (/home/ateyib/UCSD-classes/CSE 135/hw3/server.js:17:4)
    at Module._compile (internal/modules/cjs/loader.js:738:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:749:10)
    at Module.load (internal/modules/cjs/loader.js:630:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)
    at internal/main/run_main_module.js:21:11
  message: 'connection timed out',
  name: 'MongooseServerSelectionError',
  reason:
   TopologyDescription 
     type: 'ReplicaSetNoPrimary',
     setName: 'Cluster0-shard-0',
     maxSetVersion: null,
     maxElectionId: null,
     servers:
      Map 
        'cluster0-shard-00-00-ebets.mongodb.net:27017' => [ServerDescription],
        'cluster0-shard-00-01-ebets.mongodb.net:27017' => [ServerDescription],
        'cluster0-shard-00-02-ebets.mongodb.net:27017' => [ServerDescription] ,
     stale: false,
     compatible: true,
     compatibilityError: null,
     logicalSessionTimeoutMinutes: 30,
     heartbeatFrequencyMS: 10000,
     localThresholdMS: 15,
     commonWireVersion: 8 ,
  [Symbol(mongoErrorContextSymbol)]:  

【问题讨论】:

【参考方案1】:

这可能与您的 IP 地址有关。 转到Network Access 工具栏选项单击编辑按钮,然后单击添加当前 IP 地址并确认。 这对我有用。

【讨论】:

【参考方案2】:

您可能位于公司防火墙后面。

如果您不确定,您可以检查您是否可以使用third party site 访问 MongoDB 端口(来自您的堆栈跟踪的 27017),该地址位于 MongoDB documentation 中,其中有专门针对您的问题的说明'碰到了。

【讨论】:

【参考方案3】:

使用 Mongo 3.6 和 Mongoose 5.9.1 连接到不在 Atlas 上的副本集,将 useUnifiedTopology 设置为 true 导致了我的问题。从我的选项中删除它使其工作。

useUnifiedTopology: false 或者根本不设置,让它默认为 false

https://github.com/Automattic/mongoose/issues/8180

【讨论】:

【参考方案4】:

这也发生在我身上。我重新启动了我的计算机,然后突然我的应用程序无法运行......所以通过在我的终端(在我的 api/mongoDB 文件夹中)运行以下命令来重新启动 mongoDB。

brew services stop mongodb-community@5.0

然后运行

brew services start mongodb-community@5.0

【讨论】:

【参考方案5】:

我已经添加了authSource=admin,它可以工作

mongodb://127.0.0.1:27017/?authSource=admin

【讨论】:

以上是关于猫鼬连接抛出 MongooseServerSelectionError的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬承诺错误

在猫鼬中排序

在哪里进行猫鼬连接/任何数据库连接

猫鼬多个连接

你如何从猫鼬中删除模型?

护照和猫鼬的bcrypt错误