具有延迟用户模块的身份验证模块



我在通用库中有一个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分为两部分。

最新更新