MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Dengarkan untuk menghubungkan kembali acara di driver MongoDB

Tentu kamu bisa. Pada dasarnya meskipun Anda perlu memasuki EventEmitter pada tingkat yang lebih rendah daripada pada dasarnya dari MongoClient sendiri.

Anda dapat melihat dengan jelas bahwa hal-hal seperti itu ada karena terlihat di "logging", yang dapat diaktifkan pada driver melalui pengaturan:

{ "loggerLevel": "info" }

Sejak saat itu benar-benar hanya masalah memanfaatkan emitor sumber yang sebenarnya. Saya telah melakukan ini dalam daftar berikut, serta memasukkan sedikit trik untuk mendapatkan peristiwa yang disebutkan dari pancaran tertentu, yang memang digunakan oleh saya sendiri dalam melacak ini:

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)
  }

})()

Jadi kedua pendengar itu mendefinisikan:

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

Akan menyala saat koneksi terputus, dan saat koneksi ulang tercapai. Ada juga hal-hal lain seperti upaya menyambung kembali yang juga ada di emitor acara seperti yang Anda lihat dengan loggerLevel setelan diaktifkan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB ORM untuk Python?

  2. Simpan kunci terkait sebagai OID atau string di MongoDB

  3. Bagaimana mengelola database dan koleksi di MongoDB

  4. bagaimana cara mengindeks nama pengguna di mongo dengan case-insensitive?

  5. MongoDB 4.2 Manajemen &Pemantauan Tanpa Vendor Lockin