我们正在使用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 }
这是在多个路线中导入的。有了这个,我们看到警告“警告:为同一个连接创建一个重复的数据库对象。”有没有更好的方法来解决这个问题,因此每个连接细节只有一个对象?
答案 0 :(得分:1)
根据pg-promise创建和初始化the API的连接是一个完全同步的操作,所以没有必要使用promises。
要初始化库,请参阅Where should I initialize pg-promise。
另见: