sql >> Base de Datos >  >> NoSQL >> MongoDB

Cuándo cerrar la conexión de la base de datos MongoDB en Nodejs

Aquí hay una posible solución basada en el enfoque de conteo (no lo he probado y no hay captura de errores, pero debería transmitir la idea).

La estrategia básica es:Adquirir el conteo de cuántos registros deben actualizarse, guardar cada registro de forma asincrónica y una devolución de llamada en caso de éxito, lo que disminuirá el conteo y cerrará la base de datos si el conteo llega a 0 (cuando finalice la última actualización). Usando {safe:true} podemos asegurarnos de que cada actualización sea exitosa.

El servidor mongo utilizará un subproceso por conexión, por lo que es bueno a) cerrar las conexiones no utilizadas o b) agruparlas/reutilizarlas.

db.open(function (err, db) {
  db.collection('foo', function (err, collection) {
    var cursor = collection.find({});
    cursor.count(function(err,count)){
      var savesPending = count;

      if(count == 0){
        db.close();
        return;
      }

      var saveFinished = function(){
        savesPending--;
        if(savesPending == 0){
          db.close();
        }
      }

      cursor.each(function (err, doc) {
        if (doc != null) {
          doc.newkey = 'foo'; // Make some changes
          db.save(doc, {safe:true}, saveFinished);
        }
      });
    })
  });
});