当尝试创建BaseSchema Admin
的鉴别器User
的实例时,出现重复键错误。
错误与名为customerId
的字段有关,该字段在名为unique: true
的另一个鉴别器(也是BaseSchema Customer
的)上设置为User
但是该字段既不是User
也不是Admin
的一部分。 Customer
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 }
})
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' } ]
})
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将添加到用户集合的每个Discriminator添加字段的所有属性设置为“ null”,即使它们不是要实例化的Discriminator的一部分。
问题是,我不能仅仅提出伪造的customerIds
,因为它们来自外部,并且在我的应用程序之外被引用。
谢谢。
最诚挚的问候
-本