2012-08-31 12 views
5

Código:Mongoose 3.1.0: ¿Por qué la devolución de llamada en connection.db.dropDatabase (devolución de llamada) nunca se llama y la base de datos no se cae?

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

Si yo Connection.Open dice que ya está abriendo y hay varias llamadas de "abrir" están soportados por la misma conexión.

Incluso esto no funciona

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

¿Cuál es el problema? ("Mangosta": "3.1.0") La base de datos ni siquiera se dejó caer ... gracias

Respuesta

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

El problema es que el comando dropDatabase no se puso en cola y se ejecuta cuando la conexión se abrió. Entonces, si utilicé una devolución de llamada en createConnection, funcionó y solté el db después de esto, ¡funcionó!

+0

¿No has probado esto en la parte 'Incluso esto no funciona' de tu publicación original? – JohnnyHK

+0

sí, es extraño. No sé por qué ahora funcionó: S –

+0

Bueno, hay una pequeña diferencia: en la "pregunta" me han pasado el DB como argumento en lugar de concatenar en la cadena como en la "respuesta". Ese fue el truco de lo que sé. –

Cuestiones relacionadas