猫鼬连接抛出MongooseServerSelectionError

时间:2020-02-26 18:20:51

标签: mongodb mongoose timeout mongoose-schema mongodb-atlas

我正在尝试通过猫鼬驱动程序连接到我的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)]: {} }

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可能在公司防火墙后面。

如果不确定,可以使用third party site中的MongoDB documentation检查是否可以访问MongoDB端口(从堆栈跟踪中的27017),其中有专门针对您遇到的问题。

答案 2 :(得分:0)

使用Mongo 3.6和Mongoose 5.9.1连接到Atlas以外的副本集时,将useUnifiedTopology设置为true导致了我的问题。从我的选项中删除它即可正常工作。

{ useUnifiedTopology: false }或根本不设置它并使其默认为false

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