Я использую nest Js с Typescript, и мне нужно преобразовать одно свойство тела запроса. Я знаю, что преобразование выполняется с помощью каналов, но все, что я смог найти, это примеры преобразования всего тела запроса, а не единственного значения в нем. Этот был одним из примеров.
Так как же можно достичь sh этого? Я добавил пример кода, чтобы обозначить проблему. Существует сложный тип Photo
и DTO, где свойство photo
должно иметь тип Photo
. Теперь, когда поступает запрос, это свойство необходимо преобразовать из исходного типа string
в Photo
.
// Photo.ts
export class Photo {
readonly name: string;
constructor(name: string){
this.name = name.toUpperString();
}
// not the most useful example function
public function getName(){
return 'IMG-' + this.name;
}
}
// add-photo-dto.ts
export class AddPhotoDto {
@IsNotEmpty()
readonly id: number;
@IsNotEmpty()
// @IsPhoto() (for validation, but not relevant for transformation)
readonly photo: Photo;
}
// photo.controller.ts
@Post('/photo')
addPhoto(@Body(new ValidationPipe()) dto: AddPhotoDto, @Res() res: Response) {
const name = dto.photo.getName(); // How to make this work?
res.send({smollName: name})
}
Я искал возможность использовать декоратор @Type(() => Photo)
, но не заставил его работать.