任务是nest.js
在管理应用程序之前验证应用程序中的有效负载。每个有效负载可以包含tag
对象 (1 - 11)。每个tag object
只能有一个属性和值(属性由请求确定)
应验证标记对象:
- 属性应该是一个字符串,任何字符都可以接受
:
,大小在 1-255 之间 - value 应该是一个大小在 1-255 之间的字符串
任务看起来很简单。但我不知道如何验证Tag
对象中动态构造的属性。
DTO 是(使用 配置的验证class-validator
):
import {
ArrayMaxSize,
ArrayMinSize,
IsArray,
IsDefined,
IsNotEmpty,
IsObject,
IsString,
Matches,
MinLength,
ValidateNested
} from 'class-validator';
export class Payload {
...
@IsArray()
@ArrayMinSize(1)
@ArrayMaxSize(11)
@ValidateType(() => Tag)
@ValidateNested()
@ApiProperty()
tags: Tag[];
}
为了Tag
灵活(因为未知的属性名称),它像Map
扩展一样
export class Tag extends Map<string, string>{
}
或单场对象
export class Tag {
[key: string]: string;
}
如何管理每个所需的验证Tag
?
(排除输入的正则表达式:
is/^[^:]+$/
并且应该应用于key
)