Как JSON разобрать ключ перед проверкой DTO? - PullRequest
0 голосов
/ 02 мая 2020

Я новичок в гнезде Js. У меня есть поле ввода в теле, которое мне нужно JSON .parse перед проверкой его в DTO.

контроллер

@Post('test')
    @UsePipes(new ValidationPipe({transform: true}))
    @UseInterceptors(
        FileInterceptor('image', {
          storage: diskStorage({
            destination: './uploads/users',
            filename: editFileName,
          }),
          fileFilter: imageFileFilter,
        }),
      )
    testapi(
        @UploadedFile() file,
        // @Body('role', CustomUserPipe) role: string[],
        @Body() data: CreateUserDto,
    )
    {
        //
    }

DTO

    @Transform(role => {JSON.parse(role)}, {toPlainOnly: true})
    @IsNotEmpty({message: "Role can't be empty"})
    @IsArray({message: "Role must be in array"})
    @IsEnum(UserRole, {each: true, message: "Enter valid role"})
    role: UserRole[];

1 Ответ

1 голос
/ 02 мая 2020

Если вы добавляете заголовок Content-Type со значением application/json в запросе, Nest анализирует тело как json, а затем применяет проверку к полученному объекту

...