本文介绍了如何配置自定义的nestjs管道?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到了想要在自定义提供程序的方法上使用的最基本的管道。管道如下所示:

@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中。这里的问题是根本没有调用管道的转换方法……我似乎找不出原因。

推荐答案

因为管道只在请求的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);
    }
}

这篇关于如何配置自定义的nestjs管道?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-26 05:11