Mongodb mongoose连接引发MongooseServerSelectionError

Mongodb mongoose连接引发MongooseServerSelectionError,mongodb,mongoose,timeout,mongoose-schema,mongodb-atlas,Mongodb,Mongoose,Timeout,Mongoose Schema,Mongodb Atlas,我正试图通过mongoose驱动程序连接到我的mongodb Atlas,它不断抛出MongooseServerSelectionError, 我已经检查了数据库用户的用户名和密码,它是正确的 这是我的密码: server running on port 3000 we are connected: { MongooseServerSelectionError: connection timed out at new MongooseServerSelectionError (/home

我正试图通过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)]: {} }
服务器在端口3000上运行
我们已连接:{MongooseServerSelectionError:连接超时
在新的MongooseServerSelectionError(/home/ateyib/UCSD classes/CSE 135/hw3/node_modules/mongoose/lib/error/serverSelection.js:22:11)
在NativeConnection.Connection.openUri(/home/ateyib/UCSD classes/CSE 135/hw3/node_modules/mongoose/lib/Connection.js:808:32)
在Mongoose.connect(/home/ateyib/UCSD classes/CSE 135/hw3/node_modules/Mongoose/lib/index.js:333:15)
at对象。(/home/ateyib/UCSD classes/CSE 135/hw3/server.js:17:4)
at模块编译(内部/modules/cjs/loader.js:738:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:749:10)
at Module.load(内部/modules/cjs/loader.js:630:32)
在tryModuleLoad(内部/modules/cjs/loader.js:570:12)
at Function.Module._load(内部/modules/cjs/loader.js:562:3)
位于Function.Module.runMain(内部/modules/cjs/loader.js:801:12)
在internal/main/run_main_module.js:21:11
消息:“连接超时”,
名称:“MongooseServerSelectionError”,
原因:
拓扑描述{
类型:“ReplicateSetNoPrimary”,
setName:'Cluster0-shard-0',
maxSetVersion:null,
maxElectionId:null,
服务器:
地图{
'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]},
陈腐:错,
是的,
兼容性错误:null,
logicalSessionTimeoutMinutes:30,
心跳频率:10000,
localThresholdMS:15,
公共版本:8},
[符号(mongoErrorContextSymbol)]:{}

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

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


如果您不确定,您可以检查是否可以使用在中找到的来访问MongoDB端口(从stacktrace访问27017),其中有专门针对您遇到的问题的说明。

使用Mongo 3.6和Mongoose 5.9.1连接到Atlas上没有的replicaSet,将useUnifiedTopology设置为true会导致我的问题。从我的选项中删除此选项使其工作正常

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