每当我运行我的Mocha测试时,它会在创建索引和不创建索引之间交替。我认为它不知道是不是在创建索引,因为测试可能在它完成之前运行,但由于它以这样的模式交替进行,所以我不认为这是事实。我还认为这可能与我在每次测试开始时丢弃数据库有关,但这不应该只影响其他所有测试。
有问题的指数:
submissionSchema.index({ studentID: 1, assignmentID: 1 }, { unique: true });
删除数据库的代码:
before(function(done){
mongoose.createConnection(require(__dirname + '/../app/config').mongoURL, function(err){
if (err) throw err;
mongoose.connection.db.dropDatabase(function(err){
if (err) throw err;
done();
});
});
});
知道造成这种情况的原因是什么?
答案 0 :(得分:1)
Blake Sevens是对的。为了解决这个问题,我在删除数据库之后重建了索引。
before(function(done){
mongoose.createConnection(require(__dirname + '/../app/config').mongoURL, function(err){
if (err) throw err;
mongoose.connection.db.dropDatabase(function(err){
if (err) throw err;
var rebuildIndexes = []
var models = Object.keys(mongoose.connections[0].base.modelSchemas);
models.forEach(function(model){
rebuildIndexes.push(function(cb){
mongoose.model(model, mongoose.connections[0].base.modelSchemas[model]).ensureIndexes(function(err){
return cb(err);
})
});
});
async.parallel(rebuildIndexes, function(err) {
if (err) throw err;
console.log('Dumped database and restored indexes');
done();
});
});
});
});