MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Quando fechar a conexão do banco de dados MongoDB no Nodejs


Aqui está uma solução potencial baseada na abordagem de contagem (não a testei e não há captura de erros, mas deve transmitir a ideia).

A estratégia básica é:Adquira a contagem de quantos registros precisam ser atualizados, salve cada registro de forma assíncrona e um retorno de chamada em caso de sucesso, que diminuirá a contagem e fechará o BD se a contagem chegar a 0 (quando a última atualização terminar). Usando {safe:true} podemos garantir que cada atualização seja bem-sucedida.

O servidor mongo usará um thread por conexão, portanto, é bom a) fechar conexões não utilizadas ou b) agrupar/reutilizá-las.
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);
        }
      });
    })
  });
});