Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

401
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

0

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

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda