【问题标题】:In NestJS, how do you inject Dynamic modules async options to module internal imports?在 NestJS 中,如何将动态模块异步选项注入模块内部导入?
【发布时间】:2020-04-17 17:20:24
【问题描述】:
在 Nestjs 中,如果我有一个根据 forRootAsync 逻辑接受 options 对象的动态模块 A,我如何将 options 注入其导入的模块? (更不用说 module A 导入 module B 这取决于一些 Module A 选项)
我知道如何将选项对象注入到模块 A providers 但如何将其注入到模块 A 导入的模块中?
注意:要将选项注入到模块 A 导入的提供者中,我可以使用 value provider 包装选项对象并使用 Factory providers 的注入功能,使其可供提供者使用
【问题讨论】:
标签:
dependency-injection
nestjs
【解决方案1】:
如果ModuleB 被导入ModuleA,并且取决于ModuleA 的选项,那么您将在ModuleA 和ModuleB 之间拥有一个circular dependency。从技术上讲这是可行的,您需要将两个模块相互转发引用,从ModuleA 导出选项提供程序并在ModuleB 中导入ModuleA,以便选项提供程序可用。它肯定会变得一团糟,因为 DynamicModules 本身并不是在公园里散步。您可能想看看您是否可以制定不同的架构,看看您是否可以避免循环依赖。