验证模块递延用户模块(Auth module with deferred User module)

2019-10-29 04:38发布

我有一个AuthModule在需要与交互的广义库UserModule类似文档 。

我想要做的就是定义的接口UserService必须坚持的,而不是实际的实现。 这将使实施细则图书馆的用户。

我已经尝试了几种不同的方法,如具有字符串标记APP_USER_SERVICE最初null ,然后由实现覆盖,但这似乎碰到注入麻烦null值,而不是注入实际值。

我尝试另一种方法,我有点像在做AuthModule.withUserModule(UserModule)其中AuthModule进口动态UserModule并查找APP_USER_SERVICE由定义的标记UserModule实施。 这种方法的问题是,它似乎陷入循环依赖地狱。

我是新来的NestJS项目,所以也许我失去了一些东西明显。 如何组织这个工作流程的任何指针是极大的赞赏,感谢。

总之,这是我要的结构:

- > =取决于

图书馆:

AuthModule - > IUserModule

用户:

AuthModule.withUserModule(UserModule)填写IUserModule要求。

UserModule - > AuthModule

下面是代码(破大气压):

图书馆
示例实现

Answer 1:

与工作forwardRef()只能是你最后的选择。 可替代地,考虑分割模块中的一个为两个或多个部分打破循环依赖,例如:

AuthModule

  • AuthLoginModule得到由UserModule进口
  • ValidateAuthModule进口UserModule

或分别UserModule分成两个部分。



文章来源: Auth module with deferred User module