Luc*_*der 13 mongoose mongodb node.js mongodb-atlas
因此,我目前正在使用Web应用程序,并且需要数据库,因此我决定使用mongodb和mongoose。到目前为止,我已经在localhost上测试了所有内容,并且一切正常,但是我想将数据移至服务器。我听说过Atlas,并进行了注册并“上传”了数据。
现在,我想通过node.js应用程序连接到集群。
mongoose.connect('mongodb+srv://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');
Run Code Online (Sandbox Code Playgroud)
我在连接您的应用程序点获得了mongodb Atlas网站的字符串
然后我交换了密码。
mongoose.connect('mongodb://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');
Run Code Online (Sandbox Code Playgroud)
这也不起作用。
多数民众赞成在错误消息:
{ 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',
Run Code Online (Sandbox Code Playgroud)
消息:“首次连接[MongoNetworkError:connect ECONNREFUSED 18.194.163.64:27017]”时,首次连接服务器[insight-shard-00-02-quhku.mongodb.net:27017]失败。拒绝(拒绝ID:1):MongoNetworkError:首次连接[MongoNetworkError:connect ECONNREFUSED 18.194.163.64:27017](节点:4920)时,无法连接到服务器[insight-shard-00-02-quhku.mongodb.net:27017] )[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零的退出代码终止Node.js进程。
Waw*_*mau 37
我也遇到了类似的问题,可以通过在群集->安全-> IP白名单下添加我的IP地址白名单来解决此问题。不用单击my current ip address,只需在Google上搜索我的IP地址并将其粘贴即可。我希望它能起作用!
小智 23
我在连接到 MongoDB Atlas 集群时遇到了这个问题。我不得不解决这个问题两次,因为我正在使用两台不同的计算机(Macbook Pro 和 Windows PC)处理一个项目。
这是我为解决我的应用程序未连接到集群的问题而想出的所有内容的综合答案。
首先 确保您的 IP 像上述建议一样被列入白名单。最简单的解决方案是0.0.0.0/0的“所有IP”白名单
第二 如果您正在使用 VPN,请检查您的 VPN。我在连接到 VPN 时尝试连接到集群。一旦我关闭了我的 VPN,我就可以连接了。
第三 确保您的互联网设置没有阻止您连接到集群。我的家庭 Xfinity wifi 安全设置设置得太高,这阻止了连接。我认为路由器不允许连接到端口 27017。测试是否发生此问题的一种方法是将您的计算机连接到您的手机以进行互联网而不是您的 wifi 并尝试连接。我能够使用我的 iPhone 作为互联网热点进行连接。我将路由器重置为出厂设置,解决了问题。
该 mongodb+srv:// URI是无效的底层本地驱动程序。
仅删除 +srv 也不起作用,因为 uri 将需要包含您的副本主机和 replicaSet/authSource 参数。
1.升级到mongoose 5.0.15并使用更短的+srv格式
2. 使用您当前版本的 Atlas 集群仪表板中的完整 uri,选择较旧的驱动程序(请参阅下面的注释)版本 uri。
从您的集群仪表板中,按下连接按钮,然后(假设您已将节点服务器的 IP 列入白名单)选择“连接您的应用程序”,然后按下“我使用的是 3.4 或更低版本的驱动程序”。使用生成的 uri 字符串代替您的密码。
注意:在 Atlas 集群仪表板上的连接助手中选择 URI 字符串的对话框中,显示“我正在使用驱动程序 3.* 或(较新|较旧)”。这是一个糟糕的选择,因为 3.6 和 3.4 不是指驱动程序版本,而是指服务器版本。此外,使用服务器的一个版本或另一个版本与用于连接的驱动程序无关,这是确定要使用哪个版本的 URI 的实际依赖关系所在。
| 归档时间: |
|
| 查看次数: |
15023 次 |
| 最近记录: |