Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

507
Views
Manejo de errores y recuperación con el cliente node pg (postgres)

Estoy usando el módulo de nodo pg en mi aplicación y quiero asegurarme de que pueda manejar correctamente los errores de conexión y consulta.

El primer problema que tengo es que quiero asegurarme de que pueda recuperarse correctamente cuando Postgres no esté disponible.

Encontré que hay un evento de error para poder detectar si hay un error de conexión.

 import pg from 'pg' let pgClient = null async function postgresConnect() { pgClient = new pg.Client(process.env.CONNECTION_STRING) pgClient.connect() pgClient.on('error', async (e) => { console.log('Reconnecting') await sleep(5000) await postgresConnect() }) }

No me gusta usar un global aquí, y quiero configurar el retraso de suspensión para hacer un pequeño retroceso exponencial. Noté que "Reconectando" se dispara dos veces inmediatamente, luego espera cinco segundos y no estoy seguro de por qué se disparó la primera vez sin esperar.

También tengo que asegurarme de que las consultas se ejecuten. Tengo algo como esto que estaba probando.

 async function getTimestamp() { try { const res = await pgClient.query( 'select current_timestamp from current_timestamp;' ) return res.rows[0].current_timestamp } catch (error) { console.log('Retrying Query') await sleep(1000) return getTimestamp() } }

Esto parece funcionar, pero no lo he probado lo suficiente como para asegurarme de que garantizará que la consulta se ejecute o siga intentándolo. Debería buscar errores específicos y solo repetir para siempre en ciertos errores y fallar en otros. Necesito investigar más para encontrar qué errores se arrojan. También necesito hacer un retroceso en el retraso aquí también.

Todo "parece" funcionar, no quiero ser víctima del efecto Dunning-Kruger. Necesito asegurarme de que este proceso pueda manejar todo tipo de situaciones y recuperarse.

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!