Oracle Пул соединений с базой данных с node.js - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок в Node.js. Я пытаюсь создать пулы соединений с несколькими базами данных. Я успешно сделал пулы соединений (я думаю) с приведенным ниже кодом. Я знаю, что для выполнения операций запроса мне нужно что-то делать в «Успех 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")
});

1 Ответ

0 голосов
/ 24 апреля 2020

Существует много документации по 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);

...