I\'m using node-mongodb-native driver with mongodb to write a website.
I have a question about how to open mongodb connection once, then use it in collection name us
Accepted answer is 3 year old and it wont work with latest node-mongodb-native driver. I have modified @moka answer and added some delay and retry logic.
var MongoClient = require('mongodb').MongoClient;
var events = require('events');
var event = new events.EventEmitter();
var database = null;
var retries = 0;
var delay = 300;
setTimeout(connect,delay);
// Use connect method to connect to the server
function connect(){
MongoClient.connect(process.env.MONGODB_URL, function(err, db) {
if(!err){
console.log("Connected successfully to server");
database = db;
event.emit('dbconnect');
} else {
if(retries < 4){
console.log('Retrying to connect db %s', retries++);
setTimeout(connect,delay);
} else {
console.log('Unable to connect db');
}
}
});
}
exports.get = function(fn) {
if(database !== null) {
fn(database);
} else {
event.on('dbconnect', function() {
fn(database);
});
}
};