使用 class-validator 动态设置验证组

yal*_*man 5 validation dynamic typescript class-validator

假设我有一堂这样的课

import {Min, Length, IsNotEmpty} from "class-validator";
 
export class User {
 
    @Max(10, {groups: ["child"]})
    @Max(100, {groups: ["adult"]})
    @Min(11, {groups: ["adult"]})
    age: number;
 
    @IsNotEmpty({groups: ["child", "adult"]})
    birthYear: number;

    @Length(2, 20, {groups: ["child", "adult"]})
    name: string;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过这样做来验证这一点

import { validate } from 'class-validator'
User user = new User()
user.age = 15
user.birthYear = 2005
user.name = 'name'
validate(user, groups: ["adult"])
Run Code Online (Sandbox Code Playgroud)

我想做的是根据birthYear 字段动态设置用于验证的组。ValidateIf 不是我想要使用的东西,因为可能有很多字段和潜在的复杂条件。

看来我必须首先验证birthYear 字段以确保它满足给定的验证要求。这将要求我为birthYear创建一个独立的类,纯粹出于验证目的,因为似乎没有一种方法可以单独验证一个字段。如果 BirthYear 通过验证,我将使用它来确定要使用的验证组。

这感觉有点矫枉过正,而且工作量很大。有没有一种方法可以添加基于birthYear的验证组,而无需事先验证birthYear,或将其验证为单个字段?