使用环境变量配置 sails 应用程序以连接到 Heroku Postgres

Configuring sails app for connection to Heroku Postgres using Environment Variables

是否可以使用 URI 或 URL 将凭据(主机、用户、密码和数据库)合并到一个字符串中来配置 sails.js 数据库连接?或者它们是否需要在配置中单独分配为自己的键值对?

在开发中,我已将我的 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 会定期更改凭据,并且我手动复制的配置变量将变得过时,并且每当发生这种情况时都需要重新粘贴。显然,这不是一个理想的解决方案。

Heroku 会自动为资源提供一个配置变量,称为 DATABASE_URL,如下所示:

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

当凭据更改时,它应该会自动更新。 我的问题是我不知道如何配置 sails.js 连接来使用这个 url,代替个人 "host"、"user"、"password" , 和 "database" key/value 对在连接配置中。

我试过使用省略单个键并仅使用 "host" 的配置,例如:

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

但是这个连接失败了。我见过这种叫做URI的字符串,我试过long-shot配置:

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

但这也失败了。有没有办法配置与 heroku postgresql 数据库的 sails-js 连接,它将自动使用最新的凭据? (我使用的是 sails v0.12.3)

我没有使用 PostgreSQL,但你可以 try/adapt 这个:

// 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'
}

以下可能是执行此操作的正确方法:

module.exports = {
  ...
  default: {
  ssl: true,
  url: process.env.HEROKU_POSTGRESQL_SILVER_URL,
  adapter: 'sails-postgresql'
  },
  ...
}

里面config/env/production.js