【发布时间】:2017-12-31 18:58:28
【问题描述】:
我们正在使用 HashiCorp 的 Vault 来存储数据库连接凭据,然后从中构造 pg-promise 的连接字符串。 'catch' 是由于对 Vault API 的请求回调,Vault 详细信息是从 Promise 包装器提供的。
示例 database.js 模块:
const pgp = require('pg-promise')(/* options obj */);
const getDbo = () => {
return new Promise( (resolve, reject) => {
vault.init().then(secrets => {
let credentials = secrets.dbUser + ':' + secrets.dbPass
let connStr = 'postgres://' + credentials + '<@endpoint/db>'
let dbo = pgp(connStr, (err) => {
reject(err)
})
resolve(dbo);
})
}
module.exports = { get: getDbo }
这是在多条路线中导入的。有了这个,我们看到了警告“警告:为同一连接创建重复的数据库对象”。有没有更好的方法来解决这个问题,所以每个连接详细信息只有一个对象?
【问题讨论】:
-
见这个:stackoverflow.com/questions/34382796/…。另外,不清楚
pgp(connStr, (err) =>的含义,该库只接受一个连接字符串/对象。 -
谢谢;为 pgp 编辑。
标签: pg-promise