ค้นหาเว็บไซต์

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;
}

ฉันสามารถยืนยันสิ่งนี้ได้โดยการทำ

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

สิ่งที่ฉันอยากทำคือการตั้งค่ากลุ่มที่จะใช้สำหรับการตรวจสอบอย่างไดนามิกตามฟิลด์ birthYear ฉันไม่ต้องการใช้ ValidateIf เพราะอาจมีหลายฟิลด์และเงื่อนไขที่ซับซ้อน

ดูเหมือนว่าฉันจะต้องตรวจสอบความถูกต้องของฟิลด์ birthYear ก่อนเพื่อให้แน่ใจว่ามันตรงตามข้อกำหนดการตรวจสอบความถูกต้องที่กำหนด นี่จะทำให้ฉันต้องสร้างคลาสแยกสำหรับ birthYear เพื่อวัตถุประสงค์ในการตรวจสอบความถูกต้องเท่านั้น เนื่องจากดูเหมือนไม่มีวิธีตรวจสอบความถูกต้องของฟิลด์เดียวเพียงฟิลด์เดียวได้ หาก BirthYear ผ่านการตรวจสอบความถูกต้องแล้ว ฉันจะใช้มันเพื่อกำหนดกลุ่มการตรวจสอบความถูกต้องที่จะใช้

นี่รู้สึกเหมือนเกินจำเป็นและเป็นงานมาก มีวิธีเพิ่มกลุ่มการตรวจสอบบนพื้นฐานของปีเกิดโดยไม่ต้องตรวจสอบปีเกิดล่วงหน้าหรือไม่ หรือตรวจสอบมันเป็นฟิลด์เดียวได้ไหม?

บทความที่เกี่ยวข้อง