使用node.js的Oracle数据库连接池

问题描述 投票:0回答:1

我是Node.js的新手。我正在尝试建立多个数据库的连接池。我已经用下面提到的代码成功地建立了连接池(我想)。我知道为了执行查询操作,我必须在 "Connection pool DBX Success"(连接池DBX成功)上做一些事情,但我似乎不知道该怎么做,才能在所需的池上执行查询,比如crm1.execute或crm2.execute。我可以在这里做什么来实现这一点。我能想到的唯一方法是为每个数据库分别写执行函数,我知道这是错误的,我必须与15个数据库一起工作,所以不可能为所有15个数据库分别写函数。

const config = require("../config/config");
const oracledb = require("oracledb");

 crm1 = config.crm1;
 crm2 = config.crm2;

const crm1pool = oracledb.createPool ({
    user: crm1.user,
    password: crm1.password,
    connectString: crm1.connectString,
    poolMin: 1,
    poolMax: 10,
    poolTimeout: 300
}, (error,pool)=>{
    if (error){
        console.log(error);
    }
    console.log("Connection Pool DB1 success")
});

const crm2pool = oracledb.createPool ({
    user: crm2.user,
    password: crm2.password,
    connectString: crm2.connectString,
    poolMin: 1,
    poolMax: 10,
    poolTimeout: 300
}, (error,pool)=>{
    if (error){
        console.log(error);
    }
    console.log("Connection Pool DB2 success")
});
node.js oracle connection-pooling
1个回答
0
投票

有很多的 node-oracledb文档 关于集合和 例子. 先研究这些。

然后你会发现,给每个池子一个 poolAlias 会让你轻松选择使用。

await oracledb.createPool({
  user: 'hr',
  password: myhrpw,  // myhrpw contains the hr schema password
  connectString: 'localhost/XEPDB1',
  poolAlias: 'hrpool'
});

await oracledb.createPool({
  user: 'sh',
  password: myshpw,  // myshpw contains the sh schema password
  connectString: 'otherhost/OTHERDB',
  poolAlias: 'shpool'
});

const connection = await oracledb.getConnection('hrpool');

const result = await connection.execute(
      `SELECT manager_id, department_id, department_name
       FROM departments
       WHERE manager_id = :id`,
      [103],  // bind value for :id
    );
    console.log(result.rows);

© www.soinside.com 2019 - 2024. All rights reserved.