Я читал и читал и все еще смущен тем, что является лучшим способом совместного использования одного и того же соединения базы данных (MongoDb) во всем приложении NodeJs. Насколько я понимаю, соединение должно быть открыто, когда приложение запускается и повторно используется между модулями. Моя текущая идея о лучшем способе заключается в том, что server.js
(основной файл, где все начинается) подключается к базе данных и создает переменную объекта, которая передается в модули. После подключения эта переменная будет использоваться кодом модулей по мере необходимости, и это соединение остается открытым. Например:.
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
то другой модуль models/user
выглядит следующим образом:
Users = function(app, mongo) {
Users.prototype.addUser = function() {
console.log("add user");
}
Users.prototype.getAll = function() {
return "all users " + mongo.dbUsers;
}
}
module.exports = Users;
Теперь у меня есть ужасное ощущение, что это неправильно, так есть ли очевидные проблемы с этим подходом, и если да, то как сделать это лучше?