Muh*_*yar 1 javascript interceptor typescript nestjs
我想在全局拦截器中使用服务。
我的代码如下所示:
import { VariablesService } from '../app/modules/variables/variables.service';
@Interceptor()
export class globalInterceptor implements NestInterceptor {
constructor(private service: VariablesService) {
console.log('contructor running', service); //getting null here
}
Run Code Online (Sandbox Code Playgroud)
在server.ts 上,我首先是这样初始化的:
app.useGlobalInterceptors(new globalInterceptor())
Run Code Online (Sandbox Code Playgroud)
但是在注入服务后我必须做一些修改,因为现在需要参数 globalInterceptor()
const variableService = await app.get<VariablesService>(VariablesService);
app.useGlobalInterceptors(new globalInterceptor(variableService));
Run Code Online (Sandbox Code Playgroud)
现在有什么问题是我得到service的null,我无法创建服务的对象。
您可以直接从模块定义中注册一个全局拦截器:
import { Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';
@Module({
providers: [
{
provide: APP_INTERCEPTOR,
useClass: GlobalInterceptor,
},
],
})
export class ApplicationModule {}
Run Code Online (Sandbox Code Playgroud)
这在官方文档中列出,这里。
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |