How to reuse mongodb connection in node.js

前端 未结 2 1967
清酒与你
清酒与你 2020-12-10 08:02

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

2条回答
  •  独厮守ぢ
    2020-12-10 08:36

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

提交回复
热议问题