我在通用库中有一个AuthModule
,它需要与docs类似的UserModule
进行交互。
我想做的是定义UserService
必须遵守的接口,而不是实际的实现。这样会将实现细节留给库的用户。
我尝试了几种不同的方法,例如最初拥有字符串标记APP_USER_SERVICE
,然后由实现者覆盖,但是在注入null
值时似乎遇到了麻烦而不注入实际值。
我尝试过的另一种方法是null
,其中AuthModule.withUserModule(UserModule)
导入动态AuthModule
并寻找由{{1}定义的UserModule
令牌}实施。这种方法的问题在于,它似乎陷入了循环依赖地狱。
我是NestJS项目的新手,所以也许我缺少明显的东西。非常感谢任何有关如何组织此工作流程的指导。
总之,这是我要使用的结构:
-> =取决于
图书馆:
APP_USER_SERVICE
-> UserModule
用户:
AuthModule
来填写IUserModule
要求。
AuthModule.withUserModule(UserModule)
-> IUserModule
下面是代码(自动柜员机损坏):
答案 0 :(得分:1)
与forwardRef()
合作只是您的最后选择。或者,考虑将模块之一分成两个或多个部分,以打破循环依赖关系,例如:
AuthModule
AuthLoginModule
由UserModule导入ValidateAuthModule
导入UserModule 或分别将UserModule
分为两部分。