1
每當我運行我的Mocha測試時,它都會在創建索引和不創建它之間交替。我認爲它不會創建索引,因爲測試可能在完成之前就已經運行了,但是因爲它交替出現了這樣的模式,我不認爲是這種情況。我也認爲這可能與我在每次測試開始時丟棄數據庫有關,但這不應該以某種方式影響每一個測試。Mongoose索引在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();
});
});
});
任何想法是什麼引起的?
mongoose使用不同的'.ensureIndex()'(是仍然是調用)方法爲數據庫連接上定義的索引創建索引。在連接之後,你明確地調用底層驅動程序方法的'.dropDatabase()'。總之,當你吹走數據庫時你還會期望什麼?如果您期望「索引」保持原位,那麼請在相關集合/模型上調用'.remove()'。這不會「刪除」索引或集合(或實際上是數據庫),而只是在插入新數據之前使內容無效。 –
爲什麼每隔一段時間都會工作?如果在創建索引後刪除索引,索引不應該出現嗎? – user36322
他們可能不會。你可以在你調用'.dropDatabase()'的時候顯示一個可重現的情況,並且之後還有索引可用嗎?無論如何,我相信這是「鍋運氣」,特別是如果索引創建被要求以「後臺」模式運行。如果你想要一個堅實的行爲,那麼你最好自己編寫索引創建階段的腳本。貓鼬索引創建的「默認行爲」實際上被認爲是「開發便利性」,並且還建議在生產環境中關閉該選項。 –