मैं पढ़ रहा हूं और पढ़ रहा हूं और अभी भी इस बात पर असमंजस में हूं कि एक ही डेटाबेस (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;
अब मुझे भयानक एहसास हो रहा है कि यह गलत है इसलिए इस दृष्टिकोण के साथ कोई स्पष्ट समस्याएं हैं और यदि ऐसा है तो इसे बेहतर कैसे बनाएं?
module.exports = mongoist(connectionString);
। ( connectionString
MongoDB मैनुअल के बारे में पढ़ें ।)