http - 如何在 NestJS 中使用多个全局拦截器
问题描述
我已经知道我们可以从下面的代码中创建全局拦截器:
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) {}
}
从文档中,我们不能这样做,app.useGlobalInterceptors(new UserInterceptor())
因为UserInterceptor
在构造函数(UserService)中需要 1 个参数。
而且由于我们使用APP_INTERCEPTOR
了 for LoggingInterceptor
,我没有找到另一种方法来分配另一个值以APP_INTERCEPTOR
在全局范围内使用拦截器。
例如,我认为如果我们可以这样做,问题就会解决:
providers: [
{
provide: APP_INTERCEPTOR,
useClass: [LoggingInterceptor, UserInterceptor]
}
]
解决方案
providers: [
{
provide: APP_INTERCEPTOR,
useClass: LoggingInterceptor
},
{
provide: APP_INTERCEPTOR,
useClass: UserInterceptor
}
]
像这样
推荐阅读
- python - odoo 用于更新的默认更改密码表单的参数/字段
- autodesk-forge - 使用 API 创建 Forge 应用程序的可能性
- r - R矩阵行名
- python - 如何使用 Python 获取最前面的 Windows 资源管理器窗口的目录路径?
- flutter - 根据 GPS 距离对列表项进行排序
- android - NWaves Xamarin Android 不播放 wav 文件
- java - 从不同的 lambda 函数或应用程序获取 Cloud Watch 日志
- java - Spring Batch Job 已完成,但它的线程从未被破坏
- latex - KaTeX 不会在不同行上的美元符号之间呈现数学
- c# - 如何使用复选框控制 DataGridView 中选定项目的顺序?