node.js - 拆分生产/开发数据库

标签 node.js mongodb heroku express mongoose

我正在开发一个 mongoDB 支持的expressjs 应用程序。我使用 Express 生成器来创建它。

我真的很想通过 MongoLab 开发一个数据库,然后部署到 Heroku(它也由 MongoLab 数据库支持)。

将这两者分开的最佳实践是什么,以便当我在开发模式下启动应用程序时,它使用开发 mongo 实例,而当我在生产模式下部署到 heroku 时,它将使用生产数据库?

谢谢!

最佳答案

Heroku 的 12Factor 架构文档很好地解释了配置管理的最佳实践及其背后的基本原理:

tldr 是“从环境变量中提取配置并使用显式配置,而不是像‘开发’或‘生产’这样的命名环境。”

Heroku 将提供连接到 mongolab 数据库所需的所有环境变量,因此您只需在本地向您的应用程序提供这些相同的变量即可。一种常见的解决方案是 .env 文件:

这本质上是一个您不 checkin 的文件,它为您的本地环境变量提供键值对列表。它可以通过 Heroku Local 运行,或者更一般地,通过 node-foreman 或 docker-compose 等工具运行。

披露:我是 Heroku 的 Node.js 平台所有者

关于node.js - 拆分生产/开发数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198301/

相关文章:

java - 本地连接到 heroku postgresql 时出错

javascript - NODEJS 和 HEROKU : I can't serve the static files once the server is deployed

node.js - ng update --all 说 'Repository is not clean' 即使 git commit

node.js - 在 Gulp 3.9.1 中的管道之间传递变量

node.js - MongoDB 查询在 mongo-shell 上执行时间为 1 毫秒,但在 NodeJS 上需要 400 毫秒甚至更多

node.js - 安全地从 (node - express - mongodb) 获取数据库结果到 Angular 4

java - 如何在 Java/Groovy 中测试 MongoDB 过滤器 (BSON) 的相等性?

php - Heroku 403 Forbidden - Laravel 5

javascript - 为什么console.log有时会打印出已导出的变量未定义?

macos - "shasum check failed"安装 Phonegap 时出错