2012-08-31 21 views
5

Code:Mongoose 3.1.0: Tại sao cuộc gọi lại trong connection.db.dropDatabase (gọi lại) không bao giờ được gọi và DB không bị 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); 
}); 

Nếu tôi connection.open nó nói rằng nó đã được mở và không có nhiều cuộc gọi để "mở" được hỗ trợ cho cùng một kết nối.

Thậm chí điều này không làm việc

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 
}); 

vấn đề là gì? ("Cầy mangut": "3.1.0") Cơ sở dữ liệu thậm chí không được giảm ... nhờ

Trả lời

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

Vấn đề là lệnh dropDatabase không được xếp hàng đợi và không chạy khi kết nối mở. Vì vậy, nếu tôi sử dụng một cuộc gọi lại trên createConnection sau đó nó làm việc và thả db sau này, nó đã làm việc!

+0

Bạn chưa thử điều này trong phần 'Ngay cả điều này không hoạt động' trong bài đăng gốc của bạn chưa? – JohnnyHK

+0

vâng, thật lạ lùng. Tôi không biết tại sao bây giờ nó làm việc: S –

+0

Vâng, có một chút khác biệt: trong "câu hỏi" tôi đã được thông qua db làm đối số thay vì ghép trong chuỗi như trong "câu trả lời". Đó là mánh khóe từ những gì tôi biết. –

Các vấn đề liên quan