任务是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)