Community libarary that allows you to use DI to transform your dto
npm install nestjs-class-transformershell
$ npm install nestjs-class-transformer
`
Using yarn
`shell
$ yarn add nestjs-class-transformer
`
Using pnpm
`shell
$ pnpm install nestjs-class-transformer
`
Usage
First add the intercepter to the controller
`typescript
import { TransformerInterceptor } from "nestjs-class-transformer";
@UseInterceptors(TransformerInterceptor)
export class SomeController {}
`
> Remeber, you need to use UseInterceptors on every controller you need it's value to be transformed.
> You CANNOT use useGlobalInterceptors because each controller must include his own interceptor to be able to use DI correctly.
Then you need to define a transformer.
A transformer is just an injectable class that has a transform as shown below.
This class can inject whatever it needs and is accessible in it's module.
`typescript
import { Transform } from "nestjs-class-transformer";
export class NameTransformer implements Transform {
constructor(public injectedService: InjectedService) {}
transform(params: TransformFnParams) {
return injectedService.formatName(params.value, params.key);
}
}
`
Last, in your dto class do the following:
`typescript
import { Transformer } from "nestjs-class-transformer";
class SomeDto {
@Transformer(NameTransformer)
name: string;
}
``
TransformOptions object.