在 pg-promise API 中动态选择数据库/表
Posted
技术标签:
【中文标题】在 pg-promise API 中动态选择数据库/表【英文标题】:Dynamically choosing database/tables in pg-promise API 【发布时间】:2021-11-23 13:50:10 【问题描述】:pg-promise API 推荐一个初始连接对象,如:
var pgp = require('pg-promise')();
const mysqlcon = `postgres://$process.env.DB_USER:$process.env.DB_PASSWORD@$process.env.DB_HOST:5432/my_database` //note that 'my_database' is hardcoded here
var db = pgp(mysqlcon);
module.exports = db;
然后我用这个对象查询my_database数据库中的table_customers:
var db = require('./models/postgres')
db.many('SELECT * from table_customers')
.then(function (data)
console.log('DATA:', data)
)
.catch(function (error)
console.log('ERROR:', error)
)
这很好用,但是如果我要从另一个数据库中选择另一个表,我如何动态修改连接对象以将 my_database 更改为 another_database? p>
【问题讨论】:
【参考方案1】:PostgreSql 中的连接是数据库绑定的,因此您只需使用两个数据库对象:
const mySqlCon1 = `postgres://.../database1`;
const mySqlCon2 = `postgres://.../database2`;
export const db1 = pgp(mySqlCon1);
export const db2 = pgp(mySqlCon2);
【讨论】:
【参考方案2】:为动态更改 TABLE 或 DATABASE 创建变量
var db = require('./models/postgres')
db.many('SELECT * FROM $YOUR_VAR')
.then(function (data)
console.log('DATA:', data)
)
.catch(function (error)
console.log('ERROR:', error)
)
【讨论】:
然后根据选择的用户输入,或者选项,从动态数据库表数据中选择你需要的数据,但是不要忘记不同数据库中的表应该是一样的,或者多做一些逻辑再创建一个用于从数据库中选择表库的 var以上是关于在 pg-promise API 中动态选择数据库/表的主要内容,如果未能解决你的问题,请参考以下文章