Node / Express app--如何根据localhost与远程服务器更改连接字符串(node-postgress)

时间:2015-09-04 18:06:52

标签: node.js heroku express node-postgres

我有一个节点应用程序运行部署在heroku上的快速服务器。我正在使用postgres数据库(node-postgres),并且当前为应用程序配置了远程数据库的连接字符串。

我创建了本地版本的数据库,我想在localhost上运行应用程序时将应用程序配置为使用不同的连接字符串。

我需要以某种方式检测我所在的服务器,然后将conString放入if / else类型的语句中。任何想法或例子?我找不到合适的解决方案。

2 个答案:

答案 0 :(得分:2)

为此,您应该使用标准的NodeJS环境变量 - NODE_ENV

应在本地计算机上设置为development。在您的生产服务器上,它通常默认为production,就像在Heroku上一样:NODE_ENV=production

然后,您可以通过process.env.NODE_ENV从您的应用访问它。这将告诉您应用程序在哪个环境中运行,以及您应该使用哪两个连接。

答案 1 :(得分:1)

我会推荐konfig。在名为config的文件夹中创建一个名为database.js的文件,从您的应用程序中包含它,konfig进行环境切换。

示例

配置/ database.json:

{
  "development": {
    "postgresql": {
      "connection_string": "postgres://user:pass@localhost/development"
    }
  },
  "production": {
    "postgresql": {
      "connection_string": "postgres://user:pass@ec2.compute-1.amazonaws.com/sdfk23jf"
    }
  }
}

app.js:

...
var config = require('konfig')().database.connection_string;
...

在命令行上运行服务器时使用NODE_ENV,即

NODE_ENV=production node app.js

和konfig将自动进行切换,我认为它使用"开发"默认情况下。