连接到 Heroku node.js 应用程序中的数据库,而不在 git 上显示身份验证详细信息
Posted
技术标签:
【中文标题】连接到 Heroku node.js 应用程序中的数据库,而不在 git 上显示身份验证详细信息【英文标题】:Connect to the database in a Heroku node.js app without revealing authentication details on git 【发布时间】:2013-09-06 23:55:09 【问题描述】:我有一个推送到 Heroku 的 node.js 应用程序。它使用 MongoDB 进行存储。 Heroku 提供了一个免费的 MongoDB 作为您的应用程序可以连接的插件。现在我的问题是,由于连接字符串是这种格式:mongodb://dbuser:dbpass@host:port/dbname,并且由于 Heroku 使用 git 推送,我如何将我的代码推送到公共 GitHub 存储库而不透露我的每个人的用户名和密码?
有没有办法让数据库打开,只能打开来自我的 Heroku 应用程序的连接?
我不得不承认我对整个事情很困惑。
【问题讨论】:
【参考方案1】:您需要在 Heroku 开发中心阅读 Configuration and config vars。 Heroku 期望并鼓励您使用配置变量(在 Heroku 应用程序本身而不是在代码库中配置)来保护密码等敏感数据。使用heroku config:set VARIABLE=value
,但请注意,大多数 Heroku 插件在配置时会自动将身份验证信息添加到您的配置变量中。您可以通过heroku config
命令查看已设置的内容。
使用节点,您可以使用process.ENV.VARIABLE
访问您的环境变量,其中VARIABLE
是您尝试访问的环境/配置变量的名称。
最后一点,您可以在项目目录中将本地环境变量添加到.env
(将文件添加到.gitignore!)...当您使用foreman start
或foreman run
时,工头会加载这些。
【讨论】:
这太棒了又实用!谢谢【参考方案2】:如果你运行:
heroku config
工具带将显示环境变量,这样您就可以在代码中使用环境变量:
process.env.VARIABLE
【讨论】:
以上是关于连接到 Heroku node.js 应用程序中的数据库,而不在 git 上显示身份验证详细信息的主要内容,如果未能解决你的问题,请参考以下文章
Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB
Heroku 上的 Node.js Express 应用程序不会使用 Mongoose 连接到 MongoLab 数据库
无法在 heroku 上使用 node.js 连接到 mongolab