/ / NodeJS Mongoose collection.remove not working - node.js, mongodb, mongoose

NodeJS Mongoose collection.remove não funciona - node.js, mongodb, mongoose

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 № 1

Você 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");
});