我正在尝试在具有区分符的模型上创建唯一索引,但不会创建该索引。
我有一个名为加油的模型,其中包含一些字段和唯一索引:
RefuelingSchema.index(
{ vehicle: 1, organization: 1, provider: 1, date: 1 },
{ unique: true, background: false }
);
车辆,提供者和组织是ObjectId(),日期定义如下:
date: {
type: Date,
required: [
true,
"Some error text"
]
}
该模型是“抽象的”,因此它具有许多允许实例化的鉴别器(请注意 fuelType 作为discriminatorKey),如下所示:
let schemaOptions = {
autoIndex: true,
versionKey: false,
discriminatorKey: "fuelType",
dropDups: [true, "Another error text"]
};
/* Discriminators */
let GasolineRefuelingSchema = new mongoose.Schema(
GasolineRefuelingSchemaStructure,
schemaOptions
);
let GasolineRefueling = Refueling.discriminator(
fuelTypes[0],
GasolineRefuelingSchema
);
let DieselRefuelingSchema = new mongoose.Schema(
DieselRefuelingSchemaStructure,
schemaOptions
);
let DieselRefueling = Refueling.discriminator(
fuelTypes[1],
DieselRefuelingSchema
);
启动应用程序时,索引似乎是按照服务器控制台上显示的方式创建的:
Mongoose: refuelings.createIndex({ vehicle: 1, organization: 1, provider: 1, date: 1, fuelType: 1 }, { unique: true, dropDups: true, background: false })
在创建索引时,使用此模型的 index 事件不会返回任何错误:
mongoose.model("Refueling").on("index",err=>{
if (err)
console.log("Error while creating index: " + err);
})
但是使用以下命令时它不会出现在数据库中: db.refuelings.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "local_library.refuelings"
}
]
当我尝试节省一些加油时,它也存储重复项
如果我通过Mongo控制台手动创建索引,则它可以工作。 我想念什么? 谢谢