如何在NestJS(MongoDB)中设置唯一的复合索引
嘿,我有一个独特的电子邮件用户模式:如何在NestJS(MongoDB)中设置唯一的复合索引,mongodb,mongoose,unique,nestjs,Mongodb,Mongoose,Unique,Nestjs,嘿,我有一个独特的电子邮件用户模式: @Schema() export class User { @Prop() firstName!: string; @Prop() lastName!: string; @Prop({ unique: true, }) email!: string; @Prop({ nullable: true }) password?: string; } 但是现在我想扩展这个
@Schema()
export class User {
@Prop()
firstName!: string;
@Prop()
lastName!: string;
@Prop({
unique: true,
})
email!: string;
@Prop({ nullable: true })
password?: string;
}
但是现在我想扩展这个。我想要有自己用户的群组。我将创建一个组集合,并将其id添加到用户中,如:
@Schema()
export class User {
@Prop()
groupId: string;
@Prop()
firstName!: string;
...
}
对于每个组,电子邮件应该是唯一的。这意味着在用户集合中可能会有重复的电子邮件,但它们应该是唯一的,按组命名为unique component Index
如何在NestJS中设置此功能?看起来不可能仅使用
@NestJS/mongoose
装饰器来实现此功能,但是可以使用SchemaFactory
@Schema()
export class User {
@Prop()
groupId: string;
@Prop()
firstName!: string;
...
}
export const UserSchema = SchemaFactory.createForClass(User);
UserSchema.index({ groupId: 1, firstName: 1 }, { unique: true });
然后必须执行创建迁移以创建此索引,或者启用自动索引功能
@Schema({
autoIndex: true, // <--
})
export class User {
@Prop()
groupId: string;
@Prop()
firstName!: string;
...
}
@Schema({
自动索引:正确//