如何配置mongoDB连接在heroku部署的应用程序?



部署到heroku连接到mongoDB的应用程序将在此连接尝试中出现问题,因为连接到mongoDB的IP必须在mongoDB中被列入白名单。

MongoDB文档在这里说:

授予组织或项目的编程访问权限

创建一个API密钥。API密钥有两部分:公钥和私钥。你不能用通过用户界面登录Atlas的API密钥。

所有的API密钥都属于组织,但是可以被赋予访问一个项目。

创建和管理API密钥,使用Access Manager。

当您创建一个新的API密钥时,Atlas授予密钥以下内容权限:

这是我在开发中的连接方式:

keys.js:

module.exports = {
mongoURI: `mongodb+srv://user:password@cluster0.xl.mongodb.net/administrators?retryWrites=true&w=majority`,
jwtSecret: 'secret'
}

server.js:

const db = require("./config/keys").mongoURI
mongoose
.connect(db, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log("MongoDB connected"))
.catch(err => console.log(err))

我仍然不明白的是如何连接到mongoDB从一个heroku部署node.js应用程序一旦你有一个api密钥初始化??

由于heroku dyno总是从一组范围中获得随机IP,因此可以有3种可能的方法:

  1. 使用Heroku已发布的IP范围,以便允许访问Heroku Dynos。强烈不建议这样做,因为Heroku可能会改变那些可以改变的范围。

  2. 使用附加组件为您的应用程序提供出站静态IP,您可以在Atlas网络访问中添加。

  3. 购买Heroku私人空间,这有点广阔

如果你不能同时使用这两个推荐的选项,你可以允许从任何地方访问,如果你正在构建一个生产应用程序,这也是不强烈推荐的。

希望对你有帮助

最新更新