Ho letto e letto e sono ancora confuso su quale sia il modo migliore per condividere la stessa connessione di database (MongoDb) su tutta l'app NodeJs. Da quanto ho capito, la connessione dovrebbe essere aperta all'avvio dell'app e riutilizzata tra i moduli. La mia idea attuale del modo migliore è che server.js
(il file principale dove tutto inizia) si connette al database e crea una variabile oggetto che viene passata ai moduli. Una volta connessa, questa variabile verrà utilizzata dal codice dei moduli se necessario e questa connessione rimane aperta. Per esempio:
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
quindi un altro modulo ha questo models/user
aspetto:
Users = function(app, mongo) {
Users.prototype.addUser = function() {
console.log("add user");
}
Users.prototype.getAll = function() {
return "all users " + mongo.dbUsers;
}
}
module.exports = Users;
Ora ho la terribile sensazione che questo sia sbagliato, quindi ci sono problemi evidenti con questo approccio e, in caso affermativo, come migliorarlo?
module.exports = mongoist(connectionString);
. (Leggi connectionString
nel manuale MongoDB.)