无法使用heroku应用程序连接到mongodb数据库?

tcomlyy6  于 2023-10-19  发布在  Go
关注(0)|答案(4)|浏览(125)

我无法将部署到Heroku的Node.js应用与MongoDB数据库连接。它在localhost上工作正常,但在Heroku上不行。
在我的日志中,我看到这样的:
MongoNetworkError: failed to connect to server [authproject-shard-00-01-ybey8.mongodb.net:27017] on first connect [MongoNetworkError: connection 4 to authproject-shard-00-01-ybey8.mongodb.net:27017 closed]
custom-environment-variables.json

{
  "db": "Auth_db"
}

default.json

{
  "db": "mongodb://localhost/user"
}

db.js

const db = config.get("db");
  mongoose
    .connect(db)
    .then(() => console.log("connected to mongodb.."))
    .catch(err => console.error("could not connect to mongodb", err));
};
6mw9ycah

6mw9ycah1#

您需要在Heroku应用程序中配置一个环境变量。
在控制台中运行:

heroku config:set MONGODB_URI='urlOfYourMongoDatabase'

然后像这样升级你的db.js:

const mongoose = require('mongoose')

mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/TodoApp', { useNewUrlParser: true })
        .then(connect => console.log('connected to mongodb..'))
        .catch(e => console.log('could not connect to mongodb', e))

module.exports = {mongoose}

祝你好运!

aurhwmvo

aurhwmvo2#

通过在mongodb的网络访问中设置allow access from anywhere来允许mongodb中的heroku ip访问。这是可行的,但不确定允许从任何地方访问有多安全。

w1jd8yoj

w1jd8yoj3#

2021年,在Heroku中导航到您的应用程序。点击“设置”菜单。一旦它打开,通过点击它展开“配置变量”。按照.env文件中的格式填写KEY和VALUE字段。假设你的. env中有DB_HOST=url/of/your/mongodb。KEY是DB_HOST,VALUE是url/of/your/mongodb。现在点击添加按钮。你可以走了。

sycxhyv7

sycxhyv74#

“出于某种原因,使用来自Driver Node.js 3.0或更高版本的MongoDB连接字符串,而不是在其末尾使用'&w=majority',会导致成功部署。再说一次,我不确定这是否安全或最佳,但是,它正在起作用。“
Source

相关问题