配置传播到子模块

时间:2019-11-28 15:40:44

标签: nestjs

我正在寻找一种方法:

  • 将动态模块的配置传播到子模块中
  • 根据配置更改动态模块的imports

假设我们有一个动态模块A,可以选择使用动态子模块A1A2

使用静态配置,很明显如何实现问题中的要求:

@Module({})
export class AModule {
    static forRoot(options: AModuleOptions): DynamicModule {
        const imports = [];
        if (options.includeA1)
           imports.push(A1Module.forRoot(options.a1Options));  
        if (options.includeA2)
           imports.push(A2Module.forRoot(options.a2Options));   
        return {
          module: AModule,
          imports: imports,
          providers: [],
    };
  }
}

现在想象配置来自一个ConfigModule。 NestJS文档和许多附属模块展示了如何将配置服务注入提供程序以获取选项:

 static forRootAsync(options: AModuleAsyncOptions): DynamicModule {
    return {
      module: AModule,
      imports: [ConfigModule],
      providers: [
         {
            provide: 'something',
            useFactory: (config: ConfigService) => {
               return config.get('somekey');
            },
            inject: [ConfigService] 
         }
      ],
    };
  }

但是我需要同样的方法来构建子模块/从属模块及其选项的imports列表。因此,问题在于是否存在最佳实践或其他任何实现方法。

0 个答案:

没有答案