簡體   English   中英

如何在Heroku上部署MongoDB app並接入MongoDB Atlas?

[英]How do I deploy MongoDB app on Heroku and connect it to MongoDB Atlas?

更准確地說,在將我的應用程序部署到 Heroku 時,我在 mongoose 連接方法中使用哪個 URI,以及如何將它連接到 MongoDB Atlas?

目前我的代碼看起來像這樣,它在我的本地服務器上運行良好:

mongoose.connect('mongodb://localhost:27017/facebook')

在 Heroku 上部署並嘗試訪問該應用程序后,出現應用程序錯誤。 我運行了 heroku logs --tail 命令,但出現以下錯誤:

2022-02-16T04:22:16.055858+00:00 app[web.1]: _hostAddress: HostAddress { isIPv6: false, host: 'localhost', port: 27017 },
2022-02-16T04:22:16.055858+00:00 app[web.1]: address: 'localhost:27017',
2022-02-16T04:22:16.055858+00:00 app[web.1]: type: 'Unknown',
2022-02-16T04:22:16.055859+00:00 app[web.1]: hosts: [],
2022-02-16T04:22:16.055859+00:00 app[web.1]: passives: [],
2022-02-16T04:22:16.055860+00:00 app[web.1]: arbiters: [],
2022-02-16T04:22:16.055860+00:00 app[web.1]: tags: {},
2022-02-16T04:22:16.055860+00:00 app[web.1]: minWireVersion: 0,
2022-02-16T04:22:16.055861+00:00 app[web.1]: maxWireVersion: 0,
2022-02-16T04:22:16.055861+00:00 app[web.1]: roundTripTime: -1,
2022-02-16T04:22:16.055861+00:00 app[web.1]: lastUpdateTime: 570484147,
2022-02-16T04:22:16.055862+00:00 app[web.1]: lastWriteDate: 0,
2022-02-16T04:22:16.055862+00:00 app[web.1]: error: MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
2022-02-16T04:22:16.055862+00:00 app[web.1]: at connectionFailureError (/app/node_modules/mongodb/lib/cmap/connect.js:381:20)
2022-02-16T04:22:16.055863+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/mongodb/lib/cmap/connect.js:301:22)
2022-02-16T04:22:16.055863+00:00 app[web.1]: at Object.onceWrapper (node:events:640:26)
2022-02-16T04:22:16.055863+00:00 app[web.1]: at Socket.emit (node:events:520:28)
2022-02-16T04:22:16.055864+00:00 app[web.1]: at emitErrorNT (node:internal/streams/destroy:157:8)
2022-02-16T04:22:16.055864+00:00 app[web.1]: at emitErrorCloseNT (node:internal/streams/destroy:122:3)
2022-02-16T04:22:16.055864+00:00 app[web.1]: at processTicksAndRejections (node:internal/process/task_queues:83:21)
2022-02-16T04:22:16.055864+00:00 app[web.1]: }
2022-02-16T04:22:16.055865+00:00 app[web.1]: },
2022-02-16T04:22:16.055865+00:00 app[web.1]: stale: false,
2022-02-16T04:22:16.055865+00:00 app[web.1]: compatible: true,
2022-02-16T04:22:16.055865+00:00 app[web.1]: heartbeatFrequencyMS: 10000,
2022-02-16T04:22:16.055865+00:00 app[web.1]: localThresholdMS: 15,
2022-02-16T04:22:16.055866+00:00 app[web.1]: logicalSessionTimeoutMinutes: undefined
2022-02-16T04:22:16.055866+00:00 app[web.1]: }

我該怎么做才能解決這個問題?

這個 URL 'mongodb://localhost:27017/facebook'應該只在你有一個 MongoDB 服務器與應用程序運行在同一服務器上時使用,正如你可以看到localhost在 URL 字符串中,它會拋出一個錯誤,因為它在您的應用程序運行的服務器上找不到任何正在運行的 MongoDB 數據庫 Heroku

並且將它與 MongoDB atlas 連接起來非常容易,只需 go 提前創建一個帳戶和一個集群mongodb doc ,在那里你會找到你的集群 URl。用它替換當前的 URL,你應該很好。

是的,我跳過了一些關於白名單 IP 地址和用戶權限的部分,但是 MongoDB atlas 應該會提示你這樣做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM