带有延迟用户模块的验证模块

时间:2019-02-01 03:11:09

标签: javascript node.js typescript nestjs

我在通用库中有一个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

下面是代码(自动柜员机损坏):

Library
Sample Implementation

1 个答案:

答案 0 :(得分:1)

forwardRef()合作只是您的最后选择。或者,考虑将模块之一分成两个或多个部分,以打破循环依赖关系,例如:

AuthModule

  • AuthLoginModule由UserModule导入
  • ValidateAuthModule导入UserModule

或分别将UserModule分为两部分。