我有一个最基本的管道,我想在自定义提供程序的方法上使用。管道如下所示:
@Injectable()
export class DateTransformPipe implements PipeTransform {
transform(value: any, metadata: ArgumentMetadata) {
console.log('Inside the DateTransformPipe pipe...');
return value;
}
}
这是我想使用它的类:
@Injectable()
export class MyProvider {
@UsePipes(new DateTransformPipe())
private getDataFor(onDate: Date): string {
console.log(onDate);
return 'Some Stuff'
}
}
管道位于特殊目录src/helpers/pipes
中。这里的问题是根本不调用管道的transform方法...我似乎不知道为什么。
因为管道仅在请求的nestjs进程中执行,所以此函数getDataFor
是私有的,所以我想,您是通过MyProvider
中的某些代码执行它的,但这不是它的工作原理。
请阅读文档:https://docs.nestjs.com/pipes
但是请记住,管道仅在框架处理请求中执行,而不是针对您可能拥有的每种方法执行,Nest没有这种功能。
所以您可以在方法上使用该fe绑定到控制器路径。
fe:
@Controller('cats')
class CatController {
@Post()
@UsePipes(new DateTransformPipe())
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
}