Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node JS驱动程序删除多个Mongo数据库_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 使用Node JS驱动程序删除多个Mongo数据库

Javascript 使用Node JS驱动程序删除多个Mongo数据库,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我能够使用NodeJS驱动程序删除数据库 但问题是,在删除数据库之前,我必须连接到数据库,如下所示: var MongoClient = require('mongodb').MongoClient; var databaseName = 'myMongoDatabaseName' var connStr = 'mongodb://localhost:27017/' + databaseName; MongoClient.connect(connStr, function(err, db) {

我能够使用NodeJS驱动程序删除数据库

但问题是,在删除数据库之前,我必须连接到数据库,如下所示:

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();
    });
});         
var MongoClient=require('mongodb')。MongoClient;
MongoClient.connect('mongodb://localhost:27017/,函数(err,db){
db.admin().listDatabases().then(函数(dbs){
//抓取数据库
dbs=dbs.databases;
对于(var i=0;i
我的问题是,如果我有10个数据库,那么每次我都必须连接到数据库并删除它(对10个数据库重复)


它们的方式是否类似于连接到root(不指定任何数据库名称)并使用特定的数据库名称删除数据库

您可以使用构造函数使用名称创建数据库实例,连接到它并调用实例的方法,所有这些都在循环中完成。这个概念可以用 类似于以下实现(警告:未测试!):

var mongodb=require('mongodb'),
MongoClient=mongodb.MongoClient,
服务器=新的mongodb.server(“127.0.0.1”,27017),
url='1〕mongodb://localhost:27017/';
var dropAllDatabases=函数(回调){
连接(url,函数(err,db){
如果(错误)回调(错误);
db.admin().listDatabases().then(函数(dbs){
//抓取数据库
dbs=dbs.databases;
对于(var i=0;i
在文档中,它说dropDatabase用于删除当前连接的数据库,没有其他cmd用于删除数据库。然后您可能需要循环10个数据库,连接到每个数据库并删除它。不要对无法在浏览器中运行的代码使用代码段。@royhowie,对不起,我接受Node JS代码不能在浏览器中运行。我将尝试在其他地方发布节点代码。但是,您能告诉我,如何在Valijon编辑我的文章时添加代码片段。@user3278897复制代码并将其粘贴到编辑器中,然后高亮显示,然后按command(如果在Mac上)或control(windows)K,这将使代码每行缩进四个空格。在粘贴到编辑器之前,您还可以手动将代码缩进,每样多加四个空格。@royhowie,我不知道我可以添加这样的注释,如“谢谢”。你的建议适合我的新问题。它的格式很完美。我对你的评论投了赞成票。
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();
        });
    });     
};