从promise链派生的pg-promise对象的模块导出

时间:2017-07-25 17:41:27

标签: pg-promise

我们正在使用HashiCorp的Vault来存储数据库连接凭证,然后从那些构建pg-promise的连接字符串。 “catch”是由于请求回调Vault API而从Promise包装器提供Vault详细信息。

示例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 }

这是在多个路线中导入的。有了这个,我们看到警告“警告:为同一个连接创建一个重复的数据库对象。”有没有更好的方法来解决这个问题,因此每个连接细节只有一个对象?

1 个答案:

答案 0 :(得分:1)

根据pg-promise创建和初始化the API的连接是一个完全同步的操作,所以没有必要使用promises。

要初始化库,请参阅Where should I initialize pg-promise

另见: