如何在 NestJS 中使用多个全局拦截器

时间:2021-05-19 05:02:01

标签: http web nestjs interceptor

我已经知道我们可以通过下面的代码创建全局拦截器:

RichTextBox

来源:documentation

但是,如果我想说import { Module } from '@nestjs/common'; import { APP_INTERCEPTOR } from '@nestjs/core'; @Module({ providers: [ { provide: APP_INTERCEPTOR, useClass: LoggingInterceptor, }, ], }) export class AppModule {} 怎么办。
UserInterceptor 将从数据库中获取用户并转换请求。
UserInterceptor 需要注入让我们说 UserInterceptor
我想在全球范围内使用 UserService

UserInterceptor

documentation 开始,我们不能执行 @Injectable() export class UserInterceptor { constructor(private readonly service: UserService) {} } ,因为 app.useGlobalInterceptors(new UserInterceptor()) 在构造函数 (UserService) 中需要 1 个参数。

而且由于我们已经将 UserInterceptor 用于 APP_INTERCEPTOR,因此我没有找到另一种方法来为 LoggingInterceptor 分配另一个值以全局使用拦截器。
例如,我认为如果我们可以这样做,问题就会解决:

APP_INTERCEPTOR

1 个答案:

答案 0 :(得分:3)

providers: [
  {
    provide: APP_INTERCEPTOR,
    useClass: LoggingInterceptor
  },
  {
    provide: APP_INTERCEPTOR,
    useClass: UserInterceptor
  }
]

就这样