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

414
Views
¿Cómo manejar el error de conexión del cliente MongoDB después de que se haya almacenado en caché? ¿Mongo se apaga?

Creé una conexión nativa mongodb y la guardé y luego usé findOne para consultar un documento.

 const Promise = require("bluebird"); const MongoClient = require('mongodb').MongoClient; let mongoDB = undefined; const getCollection = (collName) => { if (mongoDB) { return Promise.resolve(mongoDB.collection(collName)); } else { return MongoClient.connect(EXT_CONFS.MONGODB_URL) .then(db => { mongoDB = db; return Promise.resolve(mongoDB.collection(collName)); }).catch(e => { console.error('Error in MongoDb connection'); }); } }; const findOne = (collName, filter, options) => { return getCollection(collName) .then(collection => { return collection.findOne(filter, options); }) .then(doc => { return Promise.resolve(doc); }).catch(e => { console.error(e); return Promise.reject(e); }); };

Ahora todo esto funciona bien, pero si Mongo se cierra o falla después de que el cliente de base de datos se almacena en caché, no hay forma de manejar el error. El error nunca va a ningún controlador de captura:

console.error('Error en la conexión MongoDb');

o

consola.error(e);

Incluso probé eventos:

 mongoDB.on('connecting', function () { console.log('connecting'); }); mongoDB.on('timeout', function (error) { console.log('timeout!'); }); mongoDB.on('close', function (error) { console.log('close!'); }); mongoDB.on('error', function (error) { console.error('Error in MongoDb connection: ' + error); }); mongoDB.on('connected', function () { console.log('connected!'); }); mongoDB.on('connection', function () { console.log('connected!'); }); mongoDB.on('connect', function () { console.log('connected!'); }); mongoDB.once('open', function () { console.log('connection open'); }); mongoDB.on('reconnected', function () { console.log('reconnected'); }); mongoDB.on('disconnected', function () { console.log('disconnected'); });

pero sin éxito todavía. Usando NodeJS 4.5.0, controlador MongoDB-Native 2.2.24

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Deberías hacer algo como console.error('Failed to connect to mongodb ',e); usted no está dando salida al error.

Además, algunos eventos proporcionan un parámetro adicional y usted también los está generando. En caso de que no se pueda conectar a un servidor mongodb, su aplicación solo debe notificarle que no es el mejor enfoque para manejar el inicio/reinicio del servidor mongodb desde su aplicación, use demonios como systemd u otro proceso de monitoreo.

Algunos eventos están allí simplemente para notificar a la aplicación que se perdió la conexión o que se intentó una reconexión, depende de usted manejar lo que se hará cuando se emitan esos eventos.

Por ejemplo, puede intentar verificar el estado de mongodb cuando se emite un evento de desconexión y recrear un objeto de conexión.

over 4 years ago · Santiago Trujillo Report

0

Puede envolver la declaración de conexión en un bloque try-catch.

over 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!