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

时间:2011-09-17 04:31:17

标签: ruby-on-rails deployment node.js heroku

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

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

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

如何让我的node.js脚本“正常工作”,就像我的Rails应用程序在开发环境和生产环境之间无缝移动一样?

1 个答案:

答案 0 :(得分:5)

Heroku公开了一个可以通过DATABASE_URL环境变量连接到的数据库URL。以下是Heroku Dev Center docs的相关部分。

  

使用Postgres数据库

     

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

$ heroku addons:add shared-database
     

设置DATABASE_URL   环境变量。将postgres NPM模块添加到您的   依赖关系:

"dependencies": {
  ...  
  "pg": "0.5.4"
}
     

使用该模块从代码中的某个位置连接到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));
  });
});