Я получаю ошибку дублирующегося ключа при попытке создать экземпляр Дискриминатора Admin
BaseSchema User
.
Ошибка относится к полю с именем customerId
, которое установлено как unique: true
на другом Дискриминаторе с именем Customer
, также BaseSchema User
.
Но это поле не является ни частью User
, ни Admin
. Только часть Customer
UserSchema
const UserSchema = new Schema({
email: { type: String, required: true, unique: true },
firstname: { type: String, required: true },
lastname: { type: String, required: true },
role: { type: String, required: true },
apikey: { type: String }
})
CustomerSchema
const CustomerSchema = new Schema({
customerId: { type: String, required: true, unique: true },
mobile: { type: String, unique: true },
birthdate: { type: Date, required: true },
password: { type: String },
role: { type: String, default: 'customer' },
phone: { type: String },
isActive: { type: Boolean, default: false },
events: [ { type: Schema.Types.ObjectId, ref: 'Events' } ]
})
AdminSchema
const AdminSchema = new Schema({
email: { type: String, required: true, unique: true },
firstname: { type: String, required: true },
lastname: { type: String, required: true },
password: { type: String },
role: { type: String, required: true, default: 'admin' },
apikey: { type: String },
})
Когда я пытаюсь создать более одного экземпляра этой схемы, я получаю следующую ошибку:
E11000 duplicate key error collection: database.users index: customerId_1 dup key: { : null }
Таким образом, очевидно, что MongoDB устанавливает все свойства каждого Дискриминатора, добавляющего поля в Коллекцию пользователей, как «нулевые», даже если они не являются частью Дискриминатора, который создается.
Проблема в том, что я не могу просто придумать поддельные customerIds
, так как они приходят из внешнего источника и на них ссылаются вне моего приложения.
Заранее спасибо.
С уважением
- Бен