• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

383
Views
Vuelva a intentar la conexión postgres Nodejs

Estoy usando una base de datos postgres para mi servidor web express. Estoy usando la biblioteca 'pg' para ejecutar consultas en esta base de datos.

Aquí está mi método de conexión:

 const db = new Client({ user: 'xxx', host: 'xxx', database: 'xxx', password: 'xxx', port: xxx, }) db.connect(err => { if (err) { console.error('connection error', err.stack) } else { console.log('connected') }

Luego, para ejecutar una solicitud, hago esto:

 db.query(MY_REQUEST, function (err, data) { if (err) throw err; res.render('hello/world', { title: 'Hello', data: data.rows }); });`

Todo funciona perfectamente. Pero después de varios minutos sin usar mi sitio web, mi conexión a la base de datos se agota y aparece el siguiente error:

 node:events:355 throw er; // Unhandled 'error' event ^ Error: Connection terminated unexpectedly at Connection.<anonymous> (/usr/src/app/node_modules/pg/lib/client.js:132:73) at Object.onceWrapper (node:events:484:28) at Connection.emit (node:events:378:20) at Socket.<anonymous> (/usr/src/app/node_modules/pg/lib/connection.js:58:12) at Socket.emit (node:events:378:20) at TCP.<anonymous> (node:net:665:12) Emitted 'error' event on Client instance at: at Client._handleErrorEvent (/usr/src/app/node_modules/pg/lib/client.js:319:10) at Connection.<anonymous> (/usr/src/app/node_modules/pg/lib/client.js:149:16) at Object.onceWrapper (node:events:484:28) [... lines matching original stack trace ...] at TCP.<anonymous> (node:net:665:12)

¿Cómo podría hacer para volver a conectarme automáticamente cuando se corta la conexión o cuando falla una solicitud?

over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Debe adjuntar un controlador de error para evitar que el error no controlado bloquee su aplicación. Es tan simple como:

 db.on('error', e => { console.error('DB error', e); });

En cuanto a por qué ocurre el error, necesitamos más detalles, ¿parece que podría ser un restablecimiento de la conexión debido a un tiempo de inactividad?

over 3 years ago · Santiago Trujillo Report

0

Puede crear una función para controlar si está conectado a la base de datos o no, antes de continuar con su función principal.

Cree una función para controlar database connection status de datos, reconnecting , etc. y antes de ejecutar una función relacionada con la base de datos, primero inicie esa función intermedia y espere el resultado, después de eso puede continuar usando la base de datos nuevamente.

Si lo desea (que debería ser la forma preferida en su mayoría), cree esa middle function as an async function y return a promise , cuando use esa función, wait for that function .

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!