如何用Class Validator实现允许undefined但拒绝null的验证?
问题:Class Validator如何实现“undefined通过验证,null验证失败”?
现有代码如下:
@IsOptional() @Transform(({ value }) => (value ? new Date(value) : null)) @IsDate() doj: Date;
上述代码在doj为undefined时可正常通过验证,但doj为null时也会通过验证。
我希望实现:值为undefined时验证通过,值为null时验证失败。如何通过Class Validator达成这一需求?
编辑补充
基于已采纳的答案,我编写了一个适用于NestJS + GraphQL的日期验证转换函数:
import { BadRequestException } from '@nestjs/common'; import { TransformFnParams } from 'class-transformer'; import * as moment from 'moment'; export const dateTransformValidate = ( params: TransformFnParams & { nullable: boolean } ) => { const date = params.value; if (date == null) { if (params.nullable === false) { throw new BadRequestException(`Cannot remove ${params.key}.`); } return date; } const m = moment(date); if (m.isValid()) return date; throw new BadRequestException('Invalid date.'); };
使用示例
// 允许undefined但拒绝null @Field({ nullable: true }) @IsOptional() @Transform((params) => dateTransformValidate({ ...params, nullable: false })) dob: Date; // 允许undefined和null @Field({ nullable: true }) @IsOptional() @Transform(dateTransformValidate) doj: Date;
内容的提问来源于stack exchange,提问作者mismaah
相关产品推荐
相关产品推荐

