【问题标题】:Mongoose 3.1.0: Why the callback in the connection.db.dropDatabase(callback) is never called and the DB is not DROPPED?Mongoose 3.1.0:为什么从不调用 connection.db.dropDatabase(callback) 中的回调并且数据库没有被删除?
【发布时间】:2014-03-29 00:27:31
【问题描述】:

代码:

var connection = mongoose.createConnection('mongodb://localhost:9000/' + databaseName);
connection.db.dropDatabase(function(err){
    // never reach this point!
    debugger;
    console.log(err);
    console.log('-------------->Dropped database: ' + databaseName);
});

如果我执行connection.open,它表示它已经打开,并且同一连接不支持多次调用“open”。

即使这样也行不通

var conn = mongoose.createConnection('mongodb://localhost',databaseName, 9000, {}, function(){
    console.log('created'); // is reached
    conn.db.dropDatabase(callback); // but the callback is not called anyway
});

有什么问题? (“猫鼬”:“3.1.0”) 数据库甚至没有被删除...... 谢谢

【问题讨论】:

    标签: mongoose


    【解决方案1】:
        var connection = mongoose.createConnection('mongodb://localhost:9000/' + databaseName, function(err){
            connection.db.dropDatabase(function(err){
                             // now it works!
                        })
        });
    

    问题是 dropDatabase 命令在连接打开时没有排队并且没有运行。因此,如果我在 createConnection 上使用回调,那么它会起作用并在此之后删除数据库,它会起作用!

    【讨论】:

    • 您不是已经在原始帖子的Even this doesn't work 部分尝试过吗?
    • 嗯,有一点不同:在“问题”中,我已将 db 作为参数传递,而不是像在“答案”中那样在字符串中连接。据我所知,这就是诀窍。
    • 原文中的{}参数看起来很可疑。那是干什么用的?
    • 我不记得我在哪里看到的,但我认为这是连接的一些论据。我现在找不到答案
    猜你喜欢
    • 2018-07-31
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2015-07-26
    • 2019-04-26
    • 1970-01-01
    • 2019-06-04
    • 2017-01-31
    相关资源
    最近更新 更多