タスクは、nest.js
アプリを管理する前にアプリでペイロードを検証することです。各ペイロードにはtag
オブジェクト (1 ~ 11) を含めることができます。Everytag object
には 1 つのプロパティと値のみを指定できます (プロパティはリクエストによって決定されます)。
タグ オブジェクトを検証する必要があります。
- プロパティは、任意の文字が受け入れ
:
られ、サイズが 1 ~ 255の文字列である必要があります - 値は、サイズが 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
)