2016-01-04 55 views
3

我能夠使用節點JS驅動程序Db class Method dropDatabase dropDatabase。使用節點JS驅動程序刪除多個Mongo數據庫

但問題是,我必須放棄它像以前一樣連接到數據庫如下:

var MongoClient = require('mongodb').MongoClient; 
var databaseName = 'myMongoDatabaseName' 
var connStr = 'mongodb://localhost:27017/' + databaseName; 

MongoClient.connect(connStr, function(err, db) { 
    // Let's drop the database 
    db.dropDatabase(function(err, result) { 
     console.dir('we dropped the database '); 
    }); 
    db.close(); 
}); 

我能列出MongoDB的所有數據庫,只需連接到根如下:

var MongoClient = require('mongodb').MongoClient; 
MongoClient.connect('mongodb://localhost:27017/', function(err, db) { 
    db.admin().listDatabases().then(function(dbs) { 
     // Grab the databases 
     dbs = dbs.databases; 
     for(var i = 0; i < dbs.length; i++) { 
      console.dir(dbs[i].name); 
     } 
     db.close(); 
    }); 
});   

我的問題是,如果我有10個數據庫,那麼每次我必須連接到數據庫並放棄它(重複10個數據庫)?

他們是否像任何方式連接到根(不指定任何數據庫名稱)並使用特定的數據庫名稱刪除數據庫?

+0

,它說dropDatabase用來刪除當前連接的數據庫,並沒有其他cmd以刪除數據庫。然後,您可能需要循環10個數據庫,連接到每個數據庫並放下它 – somallg

+0

不要在無法在瀏覽器中運行的代碼中使用代碼片段。 – royhowie

+0

@royhowie,我很抱歉,我接受節點JS代碼不能在瀏覽器上運行。我會嘗試在其他地方發佈節點代碼。但是,您可以請告訴我,如何在Valijon編輯我的帖子時添加代碼片段。 – user3278897

回答

1

您可以使用Db()構造函數來創建使用該名稱的數據庫實例,連接到它,並調用該實例的dropDatabase()方法,這一切都在循環中完成的。這個概念可以用 類似下面的實現來描述(警告:未經):

var mongodb = require('mongodb'), 
    MongoClient = mongodb.MongoClient, 
    server = new mongodb.Server("127.0.0.1", 27017), 
    url = 'mongodb://localhost:27017/'; 

var dropAllDatabases = function (callback) { 
    MongoClient.connect(url, function(err, db) { 
     if(err) callback(err); 
     db.admin().listDatabases().then(function(dbs) { 
      // Grab the databases 
      dbs = dbs.databases; 
      for(var i = 0; i < dbs.length; i++) { 
       console.dir(dbs[i].name); 
       new mongodb.Db(dbs[i].name, server, {}).open(function (error, client) { 
        if(error) callback(error); 
        // drop the database 
        client.dropDatabase(function(err, result) { 
         if(err) callback(err); 
         client.close(); 
        });      
       }); 
      } 
      db.close(); 
     }); 
    });  
}; 
文檔中
相關問題