【问题标题】:How to pass a @liaoliaots/nestjs-redis redis connection to global guard constructor如何将@liaoliaots/nestjs-redis redis 连接传递给全局保护构造函数
【发布时间】:2022-01-16 04:35:55
【问题描述】:

我是 NestJS 的新手,对 @liaoliaots/nestjs-redis(https://github.com/liaoliaots/nestjs-redis) 包有一些误解。例如,我有一个带有以下构造函数的守卫:

import { InjectRedis } from '@liaoliaots/nestjs-redis';
import { Redis } from 'ioredis';

@Injectable()
export class SomeGuard implements CanActivate {
    constructor(@InjectRedis() redis: Redis) {}
    
    ...
}

然后我希望那个守卫是全球性的:

//main.ts
...
app.useGlobalGuards(new SomeGuard(/* what??? */));
...

所以这是一个问题:我需要通过什么? @InjectRedis 做出奇怪的事情:)

感谢回复

【问题讨论】:

    标签: node.js typescript redis nestjs


    【解决方案1】:

    用另一种方式代替app.useGlobalGuards

    // ...
    import { Module } from '@nestjs/common'
    import { APP_GUARD } from '@nestjs/core'
    
    @Module({
      // ...
      providers: [
        {
          provide: APP_GUARD,
          useClass: SomeGuard,
        },
      ],
    })
    export class AppModule {}
    

    更清洁,并帮助您避免污染您的自举功能。此外,它还让 Nest 解决了 Redis 依赖关系。否则,您需要获取此依赖项并将其传递给 new SomeGuard 使用
    const redis = app.get(getRedisToken())

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多