Kelola kumpulan koneksi mongo dalam satu modul mandiri. Pendekatan ini memberikan dua manfaat. Pertama, kode Anda tetap modular dan lebih mudah untuk diuji. Kedua Anda tidak dipaksa untuk mencampur koneksi database Anda di objek permintaan Anda yang BUKAN tempat untuk objek koneksi database. (Mengingat sifat JavaScript, saya akan menganggap sangat berbahaya untuk mencampurkan sesuatu ke objek yang dibangun oleh kode perpustakaan). Maka dengan itu Anda hanya perlu Mempertimbangkan modul yang mengekspor dua metode. connect = () => Promise
dan get = () => dbConnectionObject
.
Dengan modul seperti itu, Anda dapat terhubung ke database terlebih dahulu
// 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);
});
Saat dalam penerbangan, aplikasi Anda hanya dapat menelepon get()
ketika membutuhkan koneksi DB.
const db = require('./myAwesomeDbModule');
db.get().find(...)... // I have excluded code here to keep the example simple
Jika Anda mengatur modul db Anda dengan cara yang sama seperti yang berikut ini tidak hanya Anda akan memiliki cara untuk memastikan bahwa aplikasi Anda tidak bisa boot kecuali Anda memiliki koneksi database Anda juga memiliki cara global untuk mengakses kumpulan koneksi database Anda yang akan kesalahan jika Anda belum mendapat koneksi.
// 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;
}