首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nestjs -从服务实例导入时向模块添加选项

Nestjs -从服务实例导入时向模块添加选项
EN

Stack Overflow用户
提问于 2021-09-26 09:11:56
回答 1查看 48关注 0票数 0
代码语言:javascript
复制
    //Imports
    
    1 @Module({
    2    imports: [CacheModule.register({
    3      store: redisStore,
    4      host: 'localhost',
    5      port: 6379,
    6      ttl: 60 * 30, // 30 mins
    7     })],
    8    controllers: [],
    9    providers: [SessionService],
    10    exports : [SessionService]
    11  })
    12 export class SessionModule {
    13   
    14 }

我有一项为我提供价值的服务。它被命名为EnvService。它有一个get方法,我可以在其中传递key并获取相关的值。

您可以从代码中看到值- localhost和port,ttl。-这些值是在导入模块时设置的。这些值必须来自我的EnvService实例,我已经定义了EnvService,它是可注入的,并且在模块EnvService模块中可用。EnvService也会导出。

代码语言:javascript
复制
    imports: [HttpModule],
         providers: [EnvService, AuthService],
      exports: [EnvService],
    })
    export class EnvModule {}

我正在尝试找到如何在第一行之前添加行-要获取EnvService的实例,请说const EnvService: EnsService =

代码语言:javascript
复制
    1 @Module({
    2    imports: [CacheModule.register({
    3      store: redisStore,
    4      host: envService.get('REDIS_HOST),
    5      port: envService.get('REDSIS_PORT'),
    6      ttl: envService.get(TTL)

有什么建议吗?或者它必须以不同的方式来完成。

EN

回答 1

Stack Overflow用户

发布于 2021-09-26 18:30:01

我错过了去看CacheModule well。它里面有registerAsync方法。这是link - https://docs.nestjs.com/techniques/caching#different-stores检查“异步配置”部分。

所以我的解决方案是:

代码语言:javascript
复制
CacheModule.registerAsync({
  imports: [EnvModule],
  useFactory: async envService: EnvService) => ({
    store: redisStore,
    host: envService.get('REDIS_HOST),
    port: envService.get('REDSIS_PORT'),
    ttl: envService.get(TTL)
  }),
  inject: [EnvService],
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69333393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档