我如何配置自定义nestjs管道?

问题描述 投票:1回答:1

我有一个最基本的管道,我想在自定义提供程序的方法上使用。管道如下所示:

@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方法...我似乎不知道为什么。

typescript nestjs
1个回答
0
投票

因为管道仅在请求的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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.