NestJS:使用反射,通过反射DI数据获取当前方法名称?

时间:2019-05-02 09:30:35

标签: reflection nestjs reflect

我认为在nestjs中获取当前方法名称可能是可能的。我不是真正的意思是拦截器,而是使用reflect.getMetaData或类似的东西。

我想做什么?

在需要记录器的每种方法中,我正在执行以下代码行

  createTerminusOptions(): TerminusModuleOptions {
    const logger = this.loggerFactoryService.getLogger({ category: `${TerminusOptionsService.name}::createTerminusOptions` })

如您所见,TerminusOptionsService.name是强类型的,因此,如果我重构该名称,则它将损坏并被编译器捕获。方法名称是createterminusOptions,但是我将其放置在字符串中。我想尝试以编程方式或强类型获取此类型,以便如果我进行重构,则它要么自动更改,要么随着方法名称的更改而引发错误。

我知道可以使用arguments.callee,但这在严格模式下被禁止。

我认为nestjs类型系统中保存了一些元数据,所以我希望能够在这里使用某些内容?

当然,这将被归类为反射,所以我不想增加大量开销-如果可能,您是否认为这是个坏主意,因为这会降低性能?

任何想法都很感激

谢谢

0 个答案:

没有答案