NestJS-在拦截器内使用服务(不是全局拦截器)

NestJS-在拦截器内使用服务(不是全局拦截器),nestjs,nestjs-jwt,Nestjs,Nestjs Jwt,我有一个使用自定义拦截器的控制器: 控制器: @UseInterceptors(SignInterceptor) @获取('用户') 异步findOne(@Query()getUserDto:GetUser){ return wait this.userService.findByUsername(getUserDto.username) } 我还有SignService,它是NestJwt的包装器: 信号服务模块: @模块({ 进口:[ JwtModule.registerAsync({ 导

我有一个使用自定义拦截器的控制器:

控制器:

@UseInterceptors(SignInterceptor)
@获取('用户')
异步findOne(@Query()getUserDto:GetUser){
return wait this.userService.findByUsername(getUserDto.username)
}
我还有SignService,它是NestJwt的包装器:

信号服务模块:

@模块({
进口:[
JwtModule.registerAsync({
导入:[ConfigModule],
useFactory:async(configService:configService)=>({
privateKey:configService.get('PRIVATE_KEY'),
公钥:configService.get('PUBLIC_KEY'),
标志选项:{
expiresIn:configService.get('JWT\u EXP\u TIME\u IN\u SECONDS'),
算法:“RS256”,
},
}),
inject:[ConfigService],
}),
],
提供者:[签名服务],
导出:[签名服务],
})
导出类签名模块{}
最后一个信号接收器:

@Injectable()
导出类SignInterceptor实现NestInterceptor{
拦截(上下文:ExecutionContext,下一步:CallHandler):可观察{
返回next.handle().pipe(映射(数据=>this.sign(数据)))
}
符号(数据){
常数签名={
…数据,
_签名:“signedContent”,
}
签署的报税表
}
}
SignService工作正常,我使用它。我想把它用作拦截器
如何将SignService注入SignInterceptor,以便使用它提供的功能?

我假设
SignInterceptor
ApiModule
的一部分:

@Module({
  imports: [SignModule], // Import the SignModule into the ApiModule.
  controllers: [UsersController],
  providers: [SignInterceptor],
})
export class ApiModule {}
然后将
SignService
注入
SignInterceptor

@Injectable()
export class SignInterceptor implements NestInterceptor {
  constructor(private signService: SignService) {}

  //...
}

因为您使用
@UseInterceptors(SignInterceptor)
在控制器中使用拦截器,Nestjs将为您实例化
SignInterceptor
,并处理依赖项的注入。

在我发布问题后不久,我做了同样的事情。无论如何,谢谢。接受答复