类验证器:根据另一个属性的值,在验证时删除一个属性



使用class-validator和NestJS,我有这样的工作:

export class MatchDeclineReason {
@IsString()
@IsEnum(MatchDeclineReasonType)
@ApiProperty()
type: MatchDeclineReasonType;
@ValidateIf(reason => reason.type === MatchDeclineReasonType.Other)
@IsString()
@ApiProperty()
freeText: string;
}

所以如果delinceReason.type === Other,我希望得到一个freeText字符串值。


但是,如果declineReason.typeOther有任何不同,我希望去掉freeText的属性。

有没有什么方法可以在不写CustomValidator的情况下实现这种行为?

我的ValidationPipe配置:

app.useGlobalPipes(
new ValidationPipe({
disableErrorMessages: false,
whitelist: true,
transform: true,
}),
);

它可以通过使用自定义逻辑进行值转换来实现:

@ValidateIf(reason => reason.type === MatchDeclineReasonType.Other)
@Transform((params) =>
(params.obj.type === MatchDeclineReasonType.Other ? params.value : undefined)
)
@IsString()
@ApiProperty()
freeText: string;

相关内容

  • 没有找到相关文章

最新更新