【问题标题】:Dynamically choosing database/tables in pg-promise API在 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>

【问题讨论】:

    标签: javascript node.js postgresql express pg-promise


    【解决方案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
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2021-12-08
      • 1970-01-01
      • 2012-09-08
      • 2020-12-13
      • 1970-01-01
      相关资源
      最近更新 更多