J'ai lu et lu et je ne sais toujours pas quelle est la meilleure façon de partager la même connexion de base de données (MongoDb) sur toute l'application NodeJs. Si je comprends bien, la connexion doit être ouverte lorsque l'application démarre et réutilisée entre les modules. Mon idée actuelle du meilleur moyen est que server.js
(le fichier principal où tout commence) se connecte à la base de données et crée une variable objet qui est passée aux modules. Une fois connectée, cette variable sera utilisée par le code des modules si nécessaire et cette connexion reste ouverte. Par exemple:
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
alors un autre module models/user
ressemble à ça:
Users = function(app, mongo) {
Users.prototype.addUser = function() {
console.log("add user");
}
Users.prototype.getAll = function() {
return "all users " + mongo.dbUsers;
}
}
module.exports = Users;
Maintenant, j'ai horriblement l'impression que c'est faux, alors y a-t-il des problèmes évidents avec cette approche et si oui, comment l'améliorer?
module.exports = mongoist(connectionString);
. (Lire à propos connectionString
du manuel MongoDB.)