Hola, tengo un esquema para el usuario con un correo electrónico único:
@Schema() export class User { @Prop() firstName!: string; @Prop() lastName!: string; @Prop({ unique: true, }) email!: string; @Prop({ nullable: true }) password?: string; }Pero ahora quiero extender esto. Quiero tener Grupos con sus propios usuarios. Crearía una colección de grupos y agregaría su identificación a los usuarios como:
@Schema() export class User { @Prop() groupId: string; @Prop() firstName!: string; ... }Para cada grupo, el correo electrónico debe ser único. Eso significa que en la colección de usuarios podría haber correos electrónicos duplicados, pero deberían ser únicos por grupo, que se llama Índice compuesto único, supongo.
¿Cómo configuro esto en NestJS?
Parece que no es posible lograrlo únicamente mediante el uso de los @nestjs/mongoose , sin embargo, es posible declarar el índice mediante el uso de 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 });Luego debe crear una migración para crear este índice o habilitar la función de índice automático
@Schema({ autoIndex: true, // <-- }) export class User { @Prop() groupId: string; @Prop() firstName!: string; ... }