嘿,我想创建一个具有唯一电子邮件的用户。我正在使用类验证器进行额外验证。我在这里找到了很多建议来实现这样的独特性:
@Schema()
export class User {
@Prop()
firstName!: string;
@Prop()
lastName!: string;
@Prop()
email!: {
type: String,
required: true,
index: true,
unique: true
};
@Prop({ nullable: true })
password?: string;
}
Run Code Online (Sandbox Code Playgroud)
但我抛出了一个错误:
Type 'UserDocument | null' is not assignable to type 'UserInput | null'.
Run Code Online (Sandbox Code Playgroud)
...我认为总的来说,这在 NestJS 中是不可能的。
我还通过添加唯一的道具找到了解决方案:
@Prop({
unique: true,
})
email!: string;
Run Code Online (Sandbox Code Playgroud)
...这有效,但随后我得到了完全不同的错误结构,并且我无法设置自定义错误。
我在 git 上看到的任何可行的解决方案都是测试服务中的唯一性并抛出错误。
为什么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 中进行设置?