MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Posłuchaj, aby ponownie połączyć zdarzenia w sterowniku MongoDB

Oczywiście że możesz. Zasadniczo jednak musisz dotknąć EventEmitter na niższym poziomie niż w zasadzie poza MongoClient się.

Widać wyraźnie, że takie rzeczy istnieją, ponieważ są one widoczne w „logowaniu”, które można włączyć w sterowniku za pomocą ustawienia:

{ "loggerLevel": "info" }

Od tego momentu to naprawdę tylko kwestia podłączenia do rzeczywistego emitera źródłowego. Zrobiłem to w poniższym zestawieniu, a także dołączyłem małą sztuczkę do uzyskania wyliczonych zdarzeń z danego emitowanego, która została wprawdzie wykorzystana przeze mnie do śledzenia tego:

const MongoClient = require('mongodb').MongoClient;

function patchEmitter(emitter) {
  var oldEmit = emitter.emit;

  emitter.emit = function() {
    var emitArgs = arguments;

    console.log(emitArgs);

    oldEmit.apply(emitter, arguments);
  }

}


(async function() {

  let db;

  try {

    const client = new MongoClient();

    client.on('serverOpening', () => console.log('connected') );

    db = await client.connect('mongodb://localhost/test', {
      //loggerLevel: 'info'
    });

    //patchEmitter(db.s.topology);

    db.s.topology.on('close', () => console.log('Connection closed') );
    db.s.topology.on('reconnect', () => console.log('Reconnected') );


  } catch(e) {
    console.error(e)
  }

})()

Więc ci dwaj słuchacze zdefiniowali:

    db.s.topology.on('close', () => console.log('Connection closed') );
    db.s.topology.on('reconnect', () => console.log('Reconnected') );

Zaczną działać, gdy połączenie zostanie zerwane i gdy zostanie osiągnięte ponowne połączenie. Istnieją również inne rzeczy, takie jak próby ponownego połączenia, które również znajdują się w emiterze zdarzeń, tak jak w przypadku loggerLevel ustawienie włączone.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Schematy cząstkowe dotyczące mangusty bez tablic

  2. Który z CouchDB lub MongoDB odpowiada moim potrzebom?

  3. Konwersja Golang BSON

  4. Zmienne środowiskowe mongoDB OpenShift Python nie są ustawione / nie można się połączyć

  5. Jak filtrować elementy tablicy