我在通用库中有一个AuthModule
,它需要与类似于文档的UserModule
交互。
我想做的是定义一个UserService
必须遵守的接口,而不是一个实际的实现。这将把实现细节留给库的用户。
我尝试了一些不同的方法,例如让字符串令牌APP_USER_SERVICE
最初为null
,然后由实现者重写,但这似乎在注入null
值而不注入实际值时遇到了问题。
我尝试过的另一种方法是AuthModule.withUserModule(UserModule)
,其中AuthModule
导入动态UserModule
并查找由UserModule
实现定义的APP_USER_SERVICE
令牌。这种方法的问题是,它似乎陷入了循环依赖地狱。
我是NestJS项目的新手,所以也许我错过了一些显而易见的东西。任何关于如何组织此工作流程的建议都将不胜感激,谢谢。
总之,这就是我想要的结构:
->=取决于
库:
AuthModule
->IUserModule
用户:
AuthModule.withUserModule(UserModule)
以填写IUserModule
的要求。
UserModule
->AuthModule
这是代码(坏掉的atm):
库
示例实现
使用forwardRef()
应该只是您的最后手段。或者,考虑将其中一个模块拆分为两个或多个部分,以打破循环依赖关系,例如:
AuthModule
进入
AuthLoginModule
由UserModule导入ValidateAuthModule
导入UserModule
或分别将CCD_ 22分为两部分。