단일 자체 포함 모듈에서 mongo 연결 풀을 관리하십시오. 이 방법은 두 가지 이점을 제공합니다. 먼저 코드를 모듈화하고 테스트하기 쉽게 유지합니다. 둘째, 데이터베이스 연결 개체의 위치가 아닌 요청 개체에서 데이터베이스 연결을 강제로 혼합하지 마십시오. (JavaScript의 특성을 감안할 때 라이브러리 코드로 구성된 객체에 무엇이든 혼합하는 것이 매우 위험하다고 생각합니다). 따라서 두 가지 방법을 내보내는 모듈 만 고려하면됩니다. connect = () => Promise
그리고 get = () => dbConnectionObject
.
이러한 모듈을 사용하면 먼저 데이터베이스에 연결할 수 있습니다
// runs in boot.js or what ever file your application starts with
const db = require('./myAwesomeDbModule');
db.connect()
.then(() => console.log('database connected'))
.then(() => bootMyApplication())
.catch((e) => {
console.error(e);
// Always hard exit on a database connection error
process.exit(1);
});
비행 중 앱은 get()
DB 연결이 필요할 때 간단히 호출 할 수 있습니다 .
const db = require('./myAwesomeDbModule');
db.get().find(...)... // I have excluded code here to keep the example simple
다음과 같은 방법으로 DB 모듈을 설정하면 데이터베이스 연결이없는 한 응용 프로그램이 부팅되지 않도록하는 방법이있을뿐 아니라 데이터베이스 연결 풀에 액세스하는 전역 방법도 있습니다. 연결되지 않은 경우
// myAwesomeDbModule.js
let connection = null;
module.exports.connect = () => new Promise((resolve, reject) => {
MongoClient.connect(url, option, function(err, db) {
if (err) { reject(err); return; };
resolve(db);
connection = db;
});
});
module.exports.get = () => {
if(!connection) {
throw new Error('Call connect first!');
}
return connection;
}