title: How to properly reuse connection to Mongodb across NodeJs application and modules
body: <p>I've been reading and reading and still am confused on what is the best way to share the same database (MongoDb) connection across whole NodeJs app. As I understand connection should be open when app starts and reused between modules. My current idea of the best way is that <code>server.js</code> (main file where everything starts) connects to database and creates object variable that is passed to modules. Once connected this variable will be used by modules code as necessary and this connection stays open. E.g.:</p>
  
  <pre><code>    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
  </code></pre>
  
  <p>then another module <code>models/user</code> looks like that:</p>
  
  <pre><code>Users = function(app, mongo) {
  
  Users.prototype.addUser = function() {
      console.log("add user");
  }
  
  Users.prototype.getAll = function() {
  
      return "all users " + mongo.dbUsers;
  
      }
  }
  
  module.exports = Users;
  </code></pre>
  
  <p>Now I have horrible feeling that this is wrong so are there any obvious problems with this approach and if so how to make it better?</p>