Heroku上的Node.js:prod上的PostgreSQL,dev上的SQLite3?

Jor*_*ein 3 deployment ruby-on-rails heroku node.js

我有一个Node.js/Rails3应用程序,我在Heroku上托管.当在我的本地机器或远程生产盒上运行时,rails部分在PostgreSQL和SQLite3之间无缝切换.

在本地,rails框架按照定义连接到SQLite3 config/databases.yml,当我推送到Heorku时,部署脚本会用生产设置覆盖它.

我的node.js脚本没有Heroku可以挂钩的框架,并确保我在生产环境中使用正确的数据库.

如何让我的node.js脚本"正常工作"我的Rails应用程序在开发和生产环境之间无缝移动的方式?

Mic*_*ley 5

Heroku公开了一个可以通过DATABASE_URL环境变量连接的数据库URL .这是Heroku开发中心文档的相关部分.

使用Postgres数据库

要将PostgreSQL数据库添加到您的应用程序,请运行以下命令:

$ heroku addons:add shared-database
Run Code Online (Sandbox Code Playgroud)

这将设置DATABASE_URL 环境变量.将postgresNPM模块添加到依赖项:

"dependencies": {
  ...  
  "pg": "0.5.4"
}
Run Code Online (Sandbox Code Playgroud)

并使用该模块DATABASE_URL从代码中的某个地方连接:

var pg = require('pg');

pg.connect(process.env.DATABASE_URL, function(err, client) {
  var query = client.query('SELECT * FROM your_table');

  query.on('row', function(row) {
    console.log(JSON.stringify(row));
  });
});
Run Code Online (Sandbox Code Playgroud)