나는 읽고 읽고 있었지만 전체 NodeJs 앱에서 동일한 데이터베이스 (MongoDb) 연결을 공유하는 가장 좋은 방법이 무엇인지 여전히 혼란 스럽습니다. 내가 이해했듯이 앱이 시작될 때 연결이 열리고 모듈간에 재사용되어야합니다. 현재 가장 좋은 방법은 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 매뉴얼에서 읽어 보세요.)