我成功验证了我的 dto 的有效枚举类型:
// time-unit.enum.ts
export enum TimeUnit {
SECONDS = 'SECONDS',
MINUTES = 'MINUTES',
HOURS = 'HOURS',
DAYS = 'DAYS',
}
Run Code Online (Sandbox Code Playgroud)
// create-thing.dto.ts
@ApiPropertyOptional({
description: 'The lead time unit.',
example: 'DAYS',
})
@IsOptional()
@IsEnum(TimeUnit)
unit?: TimeUnit;
Run Code Online (Sandbox Code Playgroud)
在前端,我提供了一个<select>填充有空字符串作为默认值的值,然后是相应的枚举值。
如果我选择一个值,一切都会很好!这是一个可选字段(可为空的列)。因此,如果我尝试保存而不选择某些内容,我会收到 400 错误:
LeadTime.unit 必须是有效的枚举值
如何允许空字符串作为有效的枚举选项?
小智 6
最好的方法是如果该值等于空字符串则对其进行转换 // create-thing.dto.ts
@ApiPropertyOptional({
description: 'The lead time unit.',
example: 'DAYS',
})
@Transform((params) => (params.value === '' ? null : params.value))
@IsOptional()
@IsEnum(TimeUnit)
unit?: TimeUnit;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |