جاوااسکریپت - چگونه از سرویس در Global-interceptor در NEST Js استفاده کنیم


من میخواهم از سرویس در مداخلهگر جهانی استفاده کنم.

کد من شبیه این است :

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
  }

و در server.ts ابتدا من اینطور مقداردهی اولیه میکردم :

app.useGlobalInterceptors(new globalInterceptor())

اما بعد از تزریق سرویس باید بعضی تغییرات را انجام دهم زیرا پارامترها حالا در globalInterceptor() مورد نیاز هستند

const variableService = await app.get<VariablesService>(VariablesService);
  app.useGlobalInterceptors(new globalInterceptor(variableService));

مشکل این است که من دریافت میکنم service برابر با null است و نمیتوانم شیء سرویس را ایجاد کنم.

لینک مسئله گیتهاب

پاسخ شماره ۱

شما میتوانید یک رهگیر جهانی را مستقیماً از تعریف ماژول ثبت کنید:

import { Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';

@Module({
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: GlobalInterceptor,
    },
  ],
})
export class ApplicationModule {}

این در مستندات رسمی، اینجا فهرست شده است.