由于NestJS允许注入,因此我想确保自己编写的代码效率最高。
我正在使用全局拦截器包装我的应用程序响应,并使用全局过滤器来处理异常。
//main.ts:
app.useGlobalInterceptors(new ResponseWrapperInterceptor(app.get(LogService)));
app.useGlobalFilters(new ExceptionsFilter(app.get(LogService)));
//filter/interceptor.ts:
constructor(@Inject('LogService') private readonly logger: LogService) {}
在我的main.ts中,更有效率的是什么?这两种选择都有什么影响?有更好的方法吗?
//Option 1:
app.useGlobalInterceptors(new ResponseWrapperInterceptor(app.get(LogService)));
app.useGlobalFilters(new ExceptionsFilter(app.get(LogService)));
或
//Option 2:
app.useGlobalInterceptors(new ResponseWrapperInterceptor(new LogService()));
app.useGlobalFilters(new ExceptionsFilter(new LogService()));
答案 0 :(得分:1)
关于影响力或哪种方法更好,我不能说太多。但是,如果您正在寻找让Nest处理依赖注入的方法,而不必这样做,则可以在AppModule中注册拦截器和过滤器,如下所示:
@Module({
imports: [/* your imports here*/],
providers: [
{
provide: APP_INTERCEPTOR,
useClass: ResponseWrapperInterceptor
}, {
provide: APP_FILTER,
useClass: ExceptionsFilter
}
]
})
export class AppModule {}
从APP_INTERCEPTOR
导入APP_FILTER
和@nestjs/core
的位置。 You can read more about it here。