Como reutilizar corretamente a conexão com o Mongodb nos aplicativos e módulos do NodeJs

Eu tenho lido e lido e ainda estou confuso sobre qual é a melhor maneira de compartilhar a mesma conexão de banco de dados (MongoDb) em todo o aplicativo NodeJs. Pelo que entendi, a conexão deve estar aberta quando o aplicativo é iniciado e reutilizado entre os módulos. Minha idéia atual da melhor maneira é queserver.js (arquivo principal onde tudo começa) se conecta ao banco de dados e cria uma variável de objeto que é passada aos módulos. Uma vez conectada, essa variável será usada pelo código dos módulos, conforme necessário, e essa conexão permanecerá aberta. Por exemplo.:

    var MongoClient = require('mongodb').MongoClient;
    var mongo = {}; // this is passed to modules and code

    MongoClient.connect("mongodb://localhost:27017/marankings", function(err, db) {
        if (!err) {
            console.log("We are connected");

            // these tables will be passed to modules as part of mongo object
            mongo.dbUsers = db.collection("users");
            mongo.dbDisciplines = db.collection("disciplines");

            console.log("aaa " + users.getAll()); // displays object and this can be used from inside modules

        } else
            console.log(err);
    });

    var users = new(require("./models/user"))(app, mongo);
    console.log("bbb " + users.getAll()); // not connected at the very first time so displays undefined

então outro módulomodels/user se parece com isso:

Users = function(app, mongo) {

Users.prototype.addUser = function() {
    console.log("add user");
}

Users.prototype.getAll = function() {

    return "all users " + mongo.dbUsers;

    }
}

module.exports = Users;

Agora, tenho uma sensação horrível de que isso está errado. Existem problemas óbvios com essa abordagem? Em caso afirmativo, como torná-la melhor?

questionAnswers(7)

yourAnswerToTheQuestion