Tentando descartar todos os documentos em todas as coleções antes da execução dos testes de unidade ...
var collections = mongoose.connection.collections;
async.eachSeries(_.keys(collections), function(key, cb){
collections[key].remove(function(){
//Never gets here, doesn"t drop the collection and doesn"t error.
cb();
});
}
Mas o retorno de chamada em remove () nunca é acionado. Eu saí collections[key]
e ele resolve para uma coleção.
Sem erros, mas ele atinge o tempo limite, pois nunca executa o retorno de chamada.
Eu tentei fazer o loop dos modelos também e chamar isso remove
mas é o mesmo problema.
O que eu estou fazendo errado aqui?? Algum registro que eu possa ver?
Respostas:
0 para resposta № 1Você pode tentar usar o método drop:
var async = require("async"),
_ = require("underscore"),
collections = _.keys(mongoose.connection.collections);
async.forEach(collections, function(key, done) {
var collection = mongoose.connection.collections[key]
collection.drop(function(err) {
if (err && err.message != "ns not found") {
done(err);
} else {
done(null);
}
})
}, callback);
0 para resposta № 2
EDITAR: Experimente o seguinte:
var collections = mongoose.connection.collections;
async.eachSeries(_.keys(collections), function(key, cb){
mongoose.connection.db.collection(key, function(err, col) {
col.remove({}, function(){
cb();
});
})
}
0 para resposta № 3
Problema não relacionado, ele não estava se conectando ao banco de dados no ambiente de teste. Mas nenhum erro foi relatado e ele tinha uma lista válida de coleções devido a modelos de mangusto.
Eu adicionei o seguinte à configuração de teste para desconectar os erros e outras informações para ajudar a encontrar esses problemas no futuro ...
mongoose.connection.on("connected", function () {
console.log("Mongoose default connection open to " + config.db.url);
});
mongoose.connection.on("error",function (err) {
console.log("Mongoose default connection error: " + err);
});
mongoose.connection.on("disconnected", function () {
console.log("Mongoose default connection disconnected");
});