如何将@liaoliaots/nestjs-redis redis 连接传递给全局守卫构造函数
How to pass a @liaoliaots/nestjs-redis redis connection to global guard constructor
我是 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
做出奇怪的事情:)
感谢回复
而不是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())
我是 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
做出奇怪的事情:)
感谢回复
而不是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())