ฉันอ่านและอ่านและยังสับสนว่าวิธีใดดีที่สุดในการแชร์การเชื่อมต่อฐานข้อมูลเดียวกัน (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 Manual)