Мангуст Дискриминаторы + Уникальный индекс - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать уникальный индекс для модели с дискриминаторами, но он не создается.

У меня есть модель с именем Заправка , с некоторыми полями и этим уникальным индексом:

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, это работает. Что мне не хватает? Спасибо

...