Wie man die Verbindung zu Mongodb über NodeJs Anwendungen und Module hinweg richtig wiederverwendet

Ich habe gelesen und gelesen und bin immer noch verwirrt darüber, wie dieselbe Datenbankverbindung (MongoDb) für die gesamte NodeJs-App am besten freigegeben werden kann. Soweit ich weiß, sollte die Verbindung offen sein, wenn die App gestartet und zwischen den Modulen erneut verwendet wird. Meine derzeitige Vorstellung vom besten Weg ist dasserver.js (Hauptdatei, in der alles beginnt) stellt eine Verbindung zur Datenbank her und erstellt eine Objektvariable, die an Module übergeben wird. Sobald die Verbindung hergestellt ist, wird diese Variable vom Modulcode nach Bedarf verwendet und diese Verbindung bleibt geöffnet. Z.B.:

    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

dann ein anderes Modulmodels/user sieht so aus:

Users = function(app, mongo) {

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

Users.prototype.getAll = function() {

    return "all users " + mongo.dbUsers;

    }
}

module.exports = Users;

Jetzt habe ich das schreckliche Gefühl, dass dies falsch ist. Gibt es also offensichtliche Probleme mit diesem Ansatz und wenn ja, wie kann man ihn verbessern?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage