2012-08-31 10 views
5

Kodu:Mongoose 3.1.0: Neden connection.db.dropDatabase (geri arama) içindeki geri çağrı hiç çağrılmadı ve DB DROPPED değil?

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

Ben zaten açılıyor ve hiçbir birden çok çağrı, aynı bağlantı için desteklenir "açık" diyor Connection.Open yoksa.

Hatta bu

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

sorunu nedir çalışmıyor? ("Firavun faresi": "3.1.0") veritabanı bile değil bıraktı ... teşekkürler

cevap

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

sorun dropDatabase komutu sıraya değil ve bağlantı açıldığında çalışmaz olmasıdır. Bu yüzden eğer createConnection üzerinde bir geri arama kullansaydım, o zaman çalıştı ve db'yi bundan sonra bıraktı, işe yaradı!

+0

Bunu zaten orijinal yazınızın "Bu işe yaramıyor" bölümünde denemediniz mi? – JohnnyHK

+0

evet, garip. Neden şimdi işe yaradığını bilmiyorum: S –

+0

Küçük bir fark var: "soru" da db'de "cevap" gibi dizgede birleştirmek yerine argüman olarak geçtim. Bildiğimden gelen hile buydu. –