可以使用URI或将凭证(主机,用户,密码和数据库)合并到一个字符串中的URL来配置sails.js数据库连接吗?或者它们是否需要在配置中单独指定为自己的键值对?
在开发中,我已经将sails.js应用程序配置为使用环境变量来获取数据库凭据,如下所示:
in 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会定期更改凭据,并且我手动复制的配置变量将过时,并且只要发生这种情况就需要重新粘贴。显然,这不是一个理想的解决方案。
Heroku会自动为资源提供一个配置变量,名为DATABASE_URL,如下所示:
"postgres://<user>:<password>@<host>:<port>/<database>"
应在凭据更改时自动更新。 我的问题是我不知道如何配置sails.js连接来使用这个url,代替单独的“host”,“user”,“password”和“database”键/值对。连接配置。
我尝试使用省略单个密钥的配置,只使用“host”,如下所示:
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)
答案 0 :(得分:3)
我没有使用PostgreSQL,但您可以尝试/改编它:
// 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'
}
&#13;
答案 1 :(得分:0)
以下可能是正确的方法:
module.exports = {
...
default: {
ssl: true,
url: process.env.HEROKU_POSTGRESQL_SILVER_URL,
adapter: 'sails-postgresql'
},
...
}
在config / env / production.js中