【发布时间】:2021-08-08 08:09:03
【问题描述】:
我已经知道我们可以通过以下代码创建全局拦截器:
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。
@Injectable()
export class UserInterceptor {
constructor(private readonly service: UserService) {}
}
从documentation,我们不能做app.useGlobalInterceptors(new UserInterceptor()),因为UserInterceptor在构造函数(UserService)中需要1个参数。
由于我们使用APP_INTERCEPTOR 代替LoggingInterceptor,我没有找到另一种方法来为APP_INTERCEPTOR 分配另一个值以在全局范围内使用拦截器。
例如,我认为如果我们可以这样做,问题就会解决:
providers: [
{
provide: APP_INTERCEPTOR,
useClass: [LoggingInterceptor, UserInterceptor]
}
]
【问题讨论】:
标签: http web nestjs interceptor