微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决NestJS-在拦截器不是全局拦截器内部使用服务

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

控制器:

@UseInterceptors(SignInterceptor)
    @Get('users')
    async findOne(@Query() getUserDto: GetUser) {
        return await this.userService.findByUsername(getUserDto.username)
    }

我还有I SignService,它是nestJwt的包装器:

SignService模块:

@Module({
    imports: [
        JwtModule.registerasync({
            imports: [ConfigModule],useFactory: async (configService: ConfigService) => ({
                privateKey: configService.get('PRIVATE_KEY'),publicKey: configService.get('PUBLIC_KEY'),signoptions: {
                    expiresIn: configService.get('JWT_EXP_TIME_IN_SECONDS'),algorithm: 'RS256',},}),inject: [ConfigService],],providers: [SignService],exports: [SignService],})
export class SignModule {}

最后是SignInterceptor:

@Injectable()
export class SignInterceptor implements nestInterceptor {
    intercept(context: ExecutionContext,next: CallHandler): Observable<any> {
        return next.handle().pipe(map(data => this.sign(data)))
    }

    sign(data) {
        const signed = {
            ...data,_signed: 'signedContent',}

        return signed
    }
}

SignService可以正常使用,我可以使用它。我想用它作为拦截器 如何将SignService注入SignInterceptor,以便可以使用它提供的功能

解决方法

我认为SignInterceptorApiModule的一部分:

@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并处理依赖项的注入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?