假设我的模块定义如下:

@Module({
  imports: [
    PassportModule.register({ defaultStrategy: 'jwt' }),
    JwtModule.register({
      // Use ConfigService here
      secretOrPrivateKey: 'secretKey',
      signOptions: {
        expiresIn: 3600,
      },
    }),
    PrismaModule,
  ],
  providers: [AuthResolver, AuthService, JwtStrategy],
})
export class AuthModule {}

现在如何从这里的 secretKey 中获取 ConfigService

最佳答案

你必须使用 registerAsync ,所以你可以注入(inject)你的 ConfigService 。有了它,您可以导入模块、注入(inject)提供程序,然后在返回配置对象的工厂函数中使用这些提供程序:

JwtModule.registerAsync({
  imports: [ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    secretOrPrivateKey: configService.getString('SECRET_KEY'),
    signOptions: {
        expiresIn: 3600,
    },
  }),
  inject: [ConfigService],
}),

有关更多信息,请参阅 async options docs

10-05 23:13