NestJS:如何将ClassSerializerInterceptor设置为全局拦截器

时间:2019-04-17 05:26:18

标签: interceptor nestjs

我在每个@UseInterceptors(ClassSerializerInterceptor)之类的Controller代码中都使用了,所以我决定将其设置为全局,并且尝试不设设置。

我在没有new的情况下尝试使用,结果却完全无法正常工作。

app.useGlobalInterceptors(new ClassSerializerInterceptor(new Reflector()));

我检查了NestJS源代码,并假定它不能用作全局代码,但应该使用。

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用以下代码行:

app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));

答案 1 :(得分:0)

我更喜欢在 app.modules.ts 中注入全局拦截器。

从具有 useGlobalInterceptors() 的任何模块外部注册的全局拦截器无法注入依赖项,因为这是在任何模块的上下文之外完成的。

import { ClassSerializerInterceptor, Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';

@Module({
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: ClassSerializerInterceptor,
    },
  ],
})
export class AppModule {}

参考:

How to use Service in Global-interceptor in NEST Js

https://docs.nestjs.com/interceptors#binding-interceptors