arquivo configOracle.js é onde tenho a string de conexão:
const oracledb = require('oracledb');let pool;// Declare a variável do pool fora da funçãoasyncfunction initializePool(){
pool =await oracledb.createPool({
user:'meu_user',// seu usuário
password:'minha_senha',// sua senha
connectString:'//172.17.0.21:1523/SPW',// string de conexão
poolMin:10,// mínimo de conexões
poolMax:20,// máximo de conexões
poolIncrement:5,// número de conexões a serem criadas quando necessário});
console.log('Pool de conexões criado com sucesso.');}const configOracle ={
getConnectionWithRetry:async(retries =5)=>{for(let i =0; i < retries; i++){try{const connection =await pool.getConnection();// Obtém uma conexão do poolreturn connection;}catch(err){
console.error(`Erro ao obter a conexão doOracle(tentativa ${i +1}/${retries}):`, err);if(i === retries -1)throw err;// Lança o erro após esgotar as tentativasawaitnewPromise(resolve => setTimeout(resolve,1000));// Aguarda 1 segundo antes da próxima tentativa}}},
getConnection:async()=>{return configOracle.getConnectionWithRetry();// Apenas reutiliza a função de retry},
closeConnection:async(connection)=>{if(connection){try{await connection.close();// Fecha a conexão, retornando-a ao pool
console.log('Conexão Oracle fechada com sucesso.');}catch(err){
console.error('Erro ao fechar a conexão Oracle:', err);throw err;}}}};// Chame a função de inicialização do pool
initializePool().catch(err =>{
console.error('Erro ao inicializar o pool de conexões:', err);});
module.exports = configOracle;
Nos arquivos que renderizam as páginas tenho o seguinte (somente trecho relevantes):
// Conexão OracleconstDBOracle= require('../listas/selectsOracle');const configOracle = require('../../database/configOracle');// Atualizado para o novo configOracleconst FUNCOES = require('../util/funcoes');const moment = require('moment');
module.exports ={
pageDASHProducao:async(req, res)=>{const connection =await configOracle.getConnection();try{// Passar a conexão para a classe DBModelOracleletDBModelOracle=newDBOracle(connection);...
e ao final quando carrega a página, fecha a conexão:
...});}catch(err){
console.error('Erro ao conectar ao banco de dados:', err);
res.status(500).send('Erro interno no servidor');} finally {// Fechando a conexão individualawait configOracle.closeConnection(connection);// Fecha a conexão após o uso}},};
Pergunta
Fabio Argenton
Solução:
Abaixo trechos relevantes do meu código.
arquivo configOracle.js é onde tenho a string de conexão:
Nos arquivos que renderizam as páginas tenho o seguinte (somente trecho relevantes):
e ao final quando carrega a página, fecha a conexão:
Resolvido
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.