小编Pet*_*cht的帖子

NestJS MongoDB 独特字段不起作用

嘿,我想创建一个具有唯一电子邮件的用户。我正在使用类验证器进行额外验证。我在这里找到了很多建议来实现这样的独特性:

@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没有解决方案自动验证唯一性如预期?

unique mongoose mongodb class-validator nestjs

9
推荐指数
1
解决办法
5430
查看次数

如何在 NestJS (MongoDB) 中设置唯一复合索引

嘿,我有一个具有唯一电子邮件的用户架构:

@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 中进行设置?

unique mongoose mongodb nestjs

7
推荐指数
1
解决办法
5549
查看次数

标签 统计

mongodb ×2

mongoose ×2

nestjs ×2

unique ×2

class-validator ×1