1

可以使用URI或将证书(主机,用户,密码和数据库)合并到一个字符串中的URL配置sails.js数据库连接?还是需要将它们单独分配为配置中的自己的键值对?使用环境变量配置Sails应用程序以连接到Heroku Postgres

在发展中,我已经配置我的sails.js应用程序使用的数据库凭据的环境变量,因为这样的:

在connections.js:

someSqlDatabase: { 
    host: process.env.dbHost, 
    user: process.env.dbUserName, 
    password: process.env.dbPassword, 
    database: process.env.db, 
    port: 5432, 
    ssl: true, 
    adapter: 'sails-postgresql' 

工作我的连接一个已分配给我的项目的heroku-postgresql资源,并且我可以在我的heroku实例中手动设置“Config Vars”,我可以像本地实例中的环境变量一样使用它。通过这个我的意思是我可以到数据库资源的heroku客户端页面,单独将其凭据(主机,数据库,用户和密码)复制到heroku应用程序的配置变量中。

问题是,heroku会定期更改凭据,并且手动复制的配置变量将变得过时,并且每当发生这种情况时都需要重新粘贴。显然,这不是一个理想的解决方案。

"postgres://<user>:<password>@<host>:<port>/<database>" 

应自动更新,当凭证更改:

的Heroku并自动为资源,被称为DATABASE_URL,它看起来像一个提供配置变量。 我的问题是,我不知道如何配置一个sails.js连接使用这个URL,在个人“主机”,“用户”,“密码”,和“数据库”键/值对的地方连接配置。

我使用省略了单独的按键,并且只使用“主机”,因为这样的配置尝试:

someSqlDatabase: { 
    host: process.env.DATABASE_URL, 
    ssl: true, 
    adapter: 'sails-postgresql' 
} 

但这连接失败。我已经看到了这种所谓的URI字符串,我已经试过了长镜头配置:

someSqlDatabase: { 
    uri: proccess.env.DATABASE_URL 
    ssl: true, 
    adapter: 'sails-postgresql' 
} 

但这种失败,也是如此。有没有办法用heroku postgresql数据库配置一个sails-js连接,它会自动使用最新的凭证? (我用帆v0.12.3)我没有使用PostgreSQL

回答

3

,但你可以尝试/适应这样的:

// before/outside module.exports 
 
var url = require('url').parse(process.env.DATABASE_URL); 
 

 
// within the config 
 
someSqlDatabase: { 
 
    host: url.host, 
 
    user: url.auth.split(':')[0], 
 
    password: url.auth.split(':')[1], 
 
    database: url.pathname.substring(1), 
 
    port: url.port, 
 
    ssl: true, 
 
    adapter: 'sails-postgresql' 
 
}

+0

这是真棒!我不知道这个功能被烧入节点。我期待需要制作一些奇特的正则表达式;这简单得多! –

+1

一个小小的更正:url.host包含端口号(看起来像'host:port'),所以你需要分割它。使用 主机:url.host.split(':')[0], –

+0

确实,对于混淆抱歉。 –

相关问题