NodeJs uygulamasının tamamında aynı veritabanı (MongoDb) bağlantısını paylaşmanın en iyi yolunun ne olduğu konusunda okuyup okuyorum ve hala kafam karışık. Anladığım kadarıyla uygulama başladığında ve modüller arasında yeniden kullanıldığında bağlantı açık olmalı. En iyi yol hakkındaki mevcut fikrim ( server.jsher şeyin başladığı ana dosya) veritabanına bağlanır ve modüllere aktarılan nesne değişkeni oluşturur. Bağlandıktan sonra bu değişken modül kodu tarafından gerektiği gibi kullanılacaktır ve bu bağlantı açık kalacaktır. Örneğin:
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
sonra başka bir modül models/userşuna benzer:
Users = function(app, mongo) {
Users.prototype.addUser = function() {
console.log("add user");
}
Users.prototype.getAll = function() {
return "all users " + mongo.dbUsers;
}
}
module.exports = Users;
Şimdi bunun yanlış olduğuna dair korkunç bir his var, bu yüzden bu yaklaşımla ilgili bariz sorunlar var mı ve eğer öyleyse nasıl daha iyi hale getirebilirim?
module.exports = mongoist(connectionString);. ( connectionStringMongoDB El Kitabında okuyun .)