Saya telah membaca dan membaca dan masih bingung tentang apa cara terbaik untuk berbagi koneksi database (MongoDb) yang sama di seluruh aplikasi NodeJs. Seperti yang saya pahami, koneksi harus dibuka saat aplikasi dimulai dan digunakan kembali antar modul. Ide saya saat ini tentang cara terbaik adalah server.js
(file utama tempat semuanya dimulai) terhubung ke database dan membuat variabel objek yang diteruskan ke modul. Setelah terhubung, variabel ini akan digunakan oleh kode modul seperlunya dan koneksi ini tetap terbuka. Misalnya:
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
kemudian modul lain models/user
terlihat seperti itu:
Users = function(app, mongo) {
Users.prototype.addUser = function() {
console.log("add user");
}
Users.prototype.getAll = function() {
return "all users " + mongo.dbUsers;
}
}
module.exports = Users;
Sekarang saya memiliki perasaan buruk bahwa ini salah, jadi apakah ada masalah yang jelas dengan pendekatan ini dan jika demikian, bagaimana cara membuatnya lebih baik?
module.exports = mongoist(connectionString);
. (Baca tentang connectionString
di Manual MongoDB.)