尝试在单元测试运行之前删除所有集合中的所有文档...
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();
});
}
但是remove()中的回调永远不会被触发。
我已经注销了collections[key]
,它确实解析了一个集合。
没有错误,但是因为它从不运行回调而超时。
我也试过循环模型并调用remove
,但它的问题相同。
我在这做错了什么?我能看到的任何日志?
答案 0 :(得分:0)
您可以尝试使用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);
答案 1 :(得分:0)
编辑:尝试以下方法:
var collections = mongoose.connection.collections;
async.eachSeries(_.keys(collections), function(key, cb){
mongoose.connection.db.collection(key, function(err, col) {
col.remove({}, function(){
cb();
});
})
}
答案 2 :(得分:0)
无关的问题,它没有连接到测试环境中的数据库。但是没有报告错误,并且由于猫鼬模型,它有一个有效的集合列表。
我在测试设置中添加了以下内容以注销错误和其他信息,以帮助在将来找到这些问题...
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');
});