Pet*_*cht 7 unique mongoose mongodb nestjs
嘿,我有一个具有唯一电子邮件的用户架构:
@Schema()
export class User {
@Prop()
firstName!: string;
@Prop()
lastName!: string;
@Prop({
unique: true,
})
email!: string;
@Prop({ nullable: true })
password?: string;
}
Run Code Online (Sandbox Code Playgroud)
但现在我想扩展这个。我想要拥有自己的用户的群组。我将创建一个组集合并将其 id 添加到用户中,例如:
@Schema()
export class User {
@Prop()
groupId: string;
@Prop()
firstName!: string;
...
}
Run Code Online (Sandbox Code Playgroud)
对于每个组,电子邮件应该是唯一的。这意味着在用户集合中可能存在重复的电子邮件,但它们对于组来说应该是唯一的,我猜这被称为“唯一复合索引”。
我如何在 NestJS 中进行设置?
gre*_*ort 19
看起来不可能仅通过使用装饰器来实现它@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 });
Run Code Online (Sandbox Code Playgroud)
然后您必须执行创建迁移来创建此索引或启用自动索引功能
@Schema({
autoIndex: true, // <--
})
export class User {
@Prop()
groupId: string;
@Prop()
firstName!: string;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5549 次 |
| 最近记录: |