0
我想在删除所有模型之后重新创建数据库中的模型。使用猫鼬重新创建模型
Mongoose(或Mongo本身)实际上重新创建文档而不是索引。那么是否有方法可以重置Mongoose,以便它可以像第一次运行一样重新创建索引?
我使用dropDatabase的原因是因为它在测试时似乎更容易。否则,我将不得不逐个删除所有集合。
我想在删除所有模型之后重新创建数据库中的模型。使用猫鼬重新创建模型
Mongoose(或Mongo本身)实际上重新创建文档而不是索引。那么是否有方法可以重置Mongoose,以便它可以像第一次运行一样重新创建索引?
我使用dropDatabase的原因是因为它在测试时似乎更容易。否则,我将不得不逐个删除所有集合。
虽然不推荐用于生产用途,根据您的情况,您可以将index
属性添加到字段定义,以指定要创建的索引:
var animalSchema = new Schema({
name: String,
type: String,
tags: { type: [String], index: true } // field level
});
animalSchema.index({ name: 1, type: -1 }); // schema level
或者,
var s = new Schema({ name: { type: String, sparse: true })
Schema.path('name').index({ sparse: true });
或者,您可以拨打ensureIndex
Model
(docs):
Animal.ensureIndexes(function (err) {
if (err) return handleError(err);
});
我切换到了一种方法,在测试开始前通过脚本删除测试数据库。但作为反馈,您的第一个解决方案也不起作用。我认为一旦创建了一个模型,它就会缓存它并且不检查索引。 ensureIndexes方法可能工作,所以我接受这个答案。 –
它应该工作,如果你重新启动你的节点应用程序。 – WiredPrairie