Nestjs + Drizzle 项目中一些常用的自定义校验

两个字段是否一致

在注册时,我们经常需要判断 密码重复密码 两个是否一致,我们可以使用这个规则

ts
import { registerDecorator, ValidationArguments, ValidationOptions } from 'class-validator';

export function IsConfirm(validationOptions?: ValidationOptions) {
    return (object: Record<string, any>, propertyName: string) => {
        registerDecorator({
            name: 'IsConfirm',
            target: object.constructor,
            propertyName,
            constraints: [],
            options: validationOptions,
            validator: {
                validate(value: string, args: ValidationArguments) {
                    return Boolean(value === args.object[`${args.property}_confirm`]);
                },
            },
        });
    };
}

是否在数据库中存在

在编辑时,我们需要一些字段的值必须在数据库中存在,我们可以使用这个规则

比如下方的使用示例: 更新用户时,我们需要该用户名必须存在

是否在数据库中不存在

在新增时,我们需要指定的字段在数据库中不能重复,我们可以使用这个规则

它在数据库中设置了 unique 或者你希望它在数据库中是唯一的

字段是否唯一

在编辑或者新增时,我们希望这个字段是唯一的。可以使用这个规则

一些 Nestjs 的自定义装饰器
BullMQ 初体验