একক স্ব-অন্তর্ভুক্ত মডিউলটিতে মঙ্গো সংযোগ পুলগুলি পরিচালনা করুন। এই পদ্ধতির দুটি সুবিধা প্রদান করে। প্রথমত এটি আপনার কোডটিকে মডুলার এবং পরীক্ষার জন্য সহজ রাখে। দ্বিতীয়ত আপনার অনুরোধ অবজেক্টে আপনার ডাটাবেস সংযোগটি মেশাতে বাধ্য করা হয়নি যা কোনও ডাটাবেস সংযোগের জন্য নয়। (জাভাস্ক্রিপ্টের প্রকৃতি বিবেচনা করে আমি লাইব্রেরি কোড দ্বারা নির্মিত কোনও জিনিসে কোনও মিশ্রণ করা অত্যন্ত বিপজ্জনক বিবেচনা করব)। সুতরাং এটির সাথে আপনাকে কেবল এমন একটি মডিউল বিবেচনা করতে হবে যা দুটি পদ্ধতি রপ্তানি করে। 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()
যখন কোনও ডিবি সংযোগের প্রয়োজন হয় তখন কেবল কল করতে পারে ।
const db = require('./myAwesomeDbModule');
db.get().find(...)... // I have excluded code here to keep the example simple
আপনি যদি আপনার ডিবি মডিউলটিকে নিম্নোক্তভাবে একইভাবে সেট আপ করেন তবে আপনার কাছে এটি নিশ্চিত করার একটি উপায় থাকবে যে আপনার ডাটাবেস সংযোগ না থাকলে আপনার অ্যাপ্লিকেশনটি বুট হবে না যে আপনার ডাটাবেস সংযোগ পুল অ্যাক্সেস করার বিশ্বব্যাপী উপায় রয়েছে যা ত্রুটিযুক্ত হবে আপনি যদি সংযোগ না পেয়ে থাকেন।
// 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;
}