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

时间:2019-06-26 16:11:14

标签: node.js mongodb heroku

我无法将部署到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));
};

3 个答案:

答案 0 :(得分:0)

您需要在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}

祝你好运!

答案 1 :(得分:0)

通过在 mongodb 的网络访问中的任何地方设置允许访问,允许在 mongodb 中访问 heroku ip。 这有效, 但不确定允许从任何地方访问它的安全性如何。

答案 2 :(得分:0)

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