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

確實,對於混淆抱歉。 –

相關問題