0

タスクは、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)

4

1 に答える 1