2012-08-31 9 views
5

コード:Mongoose 3.1.0:connection.db.dropDatabase(コールバック)のコールバックが呼び出されず、DBがDROPPEDされていないのはなぜですか?

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ない場合。

これでも問題は何

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」)データベースも削除されません ... おかげ

答えて

3
var connection = mongoose.createConnection('mongodb://localhost:9000/' + databaseName, function(err){ 
     connection.db.dropDatabase(function(err){ 
         // now it works! 
        }) 
    }); 

問題はdropDatabaseコマンドがキューイングされていないと、接続が開かれたときに実行されなかったということです。ですから、createConnectionでコールバックを使用した場合、この後にdbを処理して削除すると、うまくいきました!

+0

元の投稿の「これで動かない」部分でこれを試してみませんか? – JohnnyHK

+0

はい、それは変です。 S –

+0

さて、少し違いがあります。「質問」では、「回答」のような文字列を連結する代わりに、dbを引数として渡しました。それは私が知っているものからのトリックでした。 –

関連する問題