Я пытаюсь создать уникальный индекс для модели с дискриминаторами, но он не создается.
У меня есть модель с именем Заправка , с некоторыми полями и этим уникальным индексом:
RefuelingSchema.index(
{ vehicle: 1, organization: 1, provider: 1, date: 1 },
{ unique: true, background: false }
);
транспортное средство, поставщик и организация являются ObjectId () s, дата определяется следующим образом:
date: {
type: Date,
required: [
true,
"Some error text"
]
}
Эта модель является "абстрактной", поэтому у него есть много дискриминаторов, чтобы разрешить создание экземпляров (обратите внимание на fuelType какcriminatorKey), а именно:
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, это работает. Что мне не хватает? Спасибо