মঙ্গুজে আপনার ডাটাবেসটি ফেলে দেওয়ার সর্বোত্তম উপায়টি আপনি মঙ্গুজের কোন সংস্করণ ব্যবহার করছেন তার উপর নির্ভর করে। আপনি যদি মঙ্গুজের কোনও সংস্করণ ব্যবহার করেন যা 4..6.৪ বা তার থেকেও বেশি নতুন সংস্করণ ব্যবহার করা হচ্ছে, তবে এই রিলিজটিতে যুক্ত হওয়া এই পদ্ধতিটি সম্ভবত আপনার পক্ষে কাজ করবে:
mongoose.connection.dropDatabase();
পুরানো রিলিজে এই পদ্ধতিটির অস্তিত্ব ছিল না। পরিবর্তে, আপনি সরাসরি মংগোডিবি কলটি ব্যবহার করবেন:
mongoose.connection.db.dropDatabase();
তবে, এটি ডাটাবেস সংযোগ তৈরি করার ঠিক পরে চালানো হলে, এটি সম্ভবত নিঃশব্দে ব্যর্থ হতে পারে। এটি সংযোগটির সাথে সম্পর্কিত যা আসলে অ্যাসিনক্রোনাস এবং কমান্ডটি হওয়ার পরে এখনও সেট আপ করা হয় না। এটি অন্যান্য মঙ্গুজ কলগুলির মতো সাধারণত সমস্যা হয় না.find()
, সংযোগটি খোলা থাকে এবং তারপরে চালানো না হওয়া পর্যন্ত কোন সারি।
যদি আপনি এর উত্স কোড তাকান dropDatabase()
সংযুক্ত শর্টকাটের দেখতে পাবেন এটি ঠিক এই সমস্যাটি সমাধান করার জন্য তৈরি করা হয়েছিল। এটি সংযোগটি উন্মুক্ত এবং প্রস্তুত কিনা তা পরীক্ষা করে দেখুন। যদি তা হয় তবে এটি তত্ক্ষণাত কমান্ডটি সরিয়ে দেয়। যদি তা না হয়, এটি ডাটাবেস সংযোগ চালু হওয়ার পরে চালানোর জন্য কমান্ডটি নিবন্ধভুক্ত করে।
উপরের কিছু পরামর্শ হ্যান্ডলারে সর্বদা আপনার dropDatabase
কমান্ড রাখার পরামর্শ দেয় open
। তবে এটি কেবল তখনই কাজ করে যখন সংযোগটি এখনও খোলা নেই।
Connection.prototype.dropDatabase = function(callback) {
var Promise = PromiseProvider.get();
var _this = this;
var promise = new Promise.ES6(function(resolve, reject) {
if (_this.readyState !== STATES.connected) {
_this.on('open', function() {
_this.db.dropDatabase(function(error) {
if (error) {
reject(error);
} else {
resolve();
}
});
});
} else {
_this.db.dropDatabase(function(error) {
if (error) {
reject(error);
} else {
resolve();
}
});
}
});
if (callback) {
promise.then(function() { callback(); }, callback);
}
return promise;
};
উপরের যুক্তিগুলির একটি সাধারণ সংস্করণ এখানে পূর্ববর্তী মঙ্গুজ সংস্করণগুলির সাথে ব্যবহার করা যেতে পারে:
function dropDatabase (connection, callback) {
if (connection.readyState !== 1) {
connection.on('open', function() {
connection.db.dropDatabase(callback);
});
} else {
connection.db.dropDatabase(callback);
}
}