सुनिश्चित करें कि आप कर सकते हैं। मूल रूप से हालांकि आपको मूल रूप से MongoClient
से निचले स्तर पर EventEmitter में टैप करने की आवश्यकता है स्वयं।
आप स्पष्ट रूप से देख सकते हैं कि ऐसी चीजें मौजूद हैं क्योंकि वे "लॉगिंग" में दिखाई दे रही हैं, जिसे सेटिंग के माध्यम से ड्राइवर में चालू किया जा सकता है:
{ "loggerLevel": "info" }
तब से यह वास्तव में वास्तविक स्रोत उत्सर्जक में दोहन की बात है। मैंने इन्हें निम्नलिखित सूची में किया है, साथ ही किसी दिए गए उत्सर्जित से गणना की गई घटनाओं को प्राप्त करने के लिए एक छोटी सी चाल भी शामिल है, जिसे स्वीकार्य रूप से इसे ट्रैक करने में स्वयं द्वारा उपयोग किया गया था:
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)
}
})()
तो उन दो श्रोताओं ने परिभाषित किया:
db.s.topology.on('close', () => console.log('Connection closed') );
db.s.topology.on('reconnect', () => console.log('Reconnected') );
जब कनेक्शन गिरता है, और जब एक पुन:कनेक्ट होता है तो आग लग जाती है। अन्य चीजें भी हैं जैसे पुन:कनेक्ट करने के प्रयास जो घटना उत्सर्जक में भी हैं जैसे आप loggerLevel
के साथ देखेंगे सेटिंग चालू है।