当前位置: 首页 > 知识库问答 >
问题:

连接到MongoDb Atlas服务器时出错

金阳曜
2023-03-14

所以我现在正在编写一个web应用程序,我需要数据库,所以我决定使用mongodb和Mongoose。到目前为止,我在localhost上测试了所有的内容,它都起作用了,但我想把数据移到服务器上。我听说过Atlas,自己注册并“上传”了数据。

现在我想通过Node.js应用程序连接到集群。

mongoose.connect('mongodb+srv://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');

我在连接您的应用程序点得到了mongodb Atlas站点的字符串

然后我交换了我的密码。

mongoose.connect('mongodb://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');

这也没用。

这是错误消息:

{ MongoError: failed to connect to server [insight-shard-00-02-quhku.mongodb.net:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017]
at Pool.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\topologies\server.js:503:11)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\pool.js:326:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at TLSSocket.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\connection.js:245:50)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
  name: 'MongoNetworkError',

消息:“首次连接时连接到服务器[Insight-Shard-00-02-QUHKU.MongoDB.NET:27017]失败[MongoNetworkError:连接经济拒绝18.194.163.64:27017]”}(节点:4920)未处理的承诺拒绝(拒绝ID:1):MongoNetworkError:首次连接时连接到服务器[Insight-Shard-00-02-QUHKU.MongoDB.NET:27017]失败[MongoNetWorkError:连接经济拒绝18.194.163.64:27017](节点:4920)[DEP0018]放弃警告:未处理的承诺拒绝将被放弃。以后,未处理的承诺拒绝将终止

共有3个答案

晏晨朗
2023-03-14

MongoDB+srv:/uri对基础本机驱动程序无效。

仅仅删除+srv也行不通,因为uri需要包含副本主机和replicaset/authsource参数

1.升级到mongoose 5.0.15并使用较短的+srv格式

2.使用当前版本和Atlas集群仪表板中的完整uri,选择较旧的驱动程序(参见下面的注释)版本uri。

从集群仪表板中,按connect按钮,然后(假设您已经将节点服务器的IP白名单)选择“connect your application”,然后按“I正在使用3.4或更高版本的驱动程序”。使用结果uri字符串代替密码。

注意:在Atlas集群仪表板上的connect helper中选择URI字符串的对话框中,显示“Iam using driver 3.*or(newerolder)”。这是一个糟糕的用词选择,因为3.6和3.4不是指驱动程序版本,而是服务器版本。此外,使用服务器的一个版本或另一个版本与用于连接的驱动程序无关,而驱动程序正是决定使用URI版本的实际依赖关系所在。

仲高超
2023-03-14

我在连接到MongoDB Atlas集群时遇到了这个问题。我不得不解决这个问题两次,因为我在两台不同的电脑(一台Macbook Pro和一台Windows PC)上进行一个项目。

下面是我为解决应用程序未连接到集群的问题所想出的所有问题的全面答案。

首先确保你的IP像上面的建议一样被白名单化。最简单的解决方案是0.0.0.0/0的“所有IPS”白名单

其次,检查您的VPN如果您正在使用一个。我在连接到VPN时试图连接到群集。一旦我关闭了我的VPN,我就可以连接了。

第三,确保您的internet设置没有阻止您连接到群集。我家Xfinity wifi安全设置设置得太高,这阻止了连接。我认为路由器不允许连接到端口27017。测试是否发生此问题的一种方法是将您的计算机绑定到您的手机上,以便上网,而不是连接您的wifi,然后尝试连接。我可以使用我的iPhone作为互联网的热点连接。我将路由器重置为出厂设置,修复了这个问题。

谢铭
2023-03-14

我也有一个类似的问题,我可以通过添加我的白名单来解决它--在Clusters->Security->IP白名单下列出我的IP地址。与其点击我当前的ip地址,不如在google上搜索我的ip地址,然后粘贴。我希望它管用!

 类似资料:
  • 初始化-iMac:桌面初始化$openssl s_client-connect gateway.sandbox.push.apple.com:2195-cert pushchatcert.pem-key pushchatkey.pem 终端响应: CONNECTED(00000003)深度=1/c=US/O=Entrust,INC./OU=www.Entrust.net/RPA是通过引用合并的/O

  • 所以我现在正在编写一个web应用程序,我需要数据库,所以我决定使用mongodb和Mongoose。到目前为止,我在localhost上测试了所有的内容,它都起作用了,但我想把数据移到服务器上。我听说过Atlas,自己注册并“上传”了数据。 现在我想通过Node.js应用程序连接到集群。 我在连接您的应用程序点得到了mongodb Atlas站点的字符串 然后我交换了我的密码。 这也没用。 这是错

  • 在线程“main”java.sql.sqlexception:在java.sql.drivermanager.getconnection(未知源)在java.sql.drivermanager.getconnection(未知源)在com.test.readalltables.main(readalltables.java:18)找不到适合JDBC的驱动程序:as400:/192.168.1.11

  • 我试图使用System.net.ftpWebResponse连接到FTP服务器,但遇到了TLS问题; 如果我使用此配置: 我得到这个错误: 正确的配置是什么? ------更新我不知道它是否有任何相关性,但我尝试了一个工具来检查ftp服务器,我得到了这个;我真的不知道这些意味着什么 通过NPN+ALPN以外的套接字测试协议 您不应继续,因为未检测到任何协议。如果你真的真的想,说“YES”-->YE

  • 我正在尝试从jaspersoft工作室(或ireport)连接到服务器,并且在执行此操作时,我收到以下错误消息: 我点击了添加服务器的图标,给了用户名和密码为“jasperadmin”,然后点击了下一步,点击下一步按钮后,它显示了上面的消息。我不明白这个错误背后的原因。请帮我解决这个问题。