javascript - 带有延迟用户模块的身份验证模块
问题描述
我有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
这是代码(损坏的atm):
解决方案
合作forwardRef()
应该只是你最后的手段。或者,考虑将其中一个模块拆分为两个或多个部分以打破循环依赖关系,例如:
AuthModule
进入
AuthLoginModule
由 UserModule 导入ValidateAuthModule
导入 UserModule
或分别UserModule
分成两部分。
推荐阅读
- c# - 将自定义 FontFamilys 绑定到 TextBlocks 列表
- javascript - Aerogear - 如何在推送通知中将数据从 Java 发送到 Web
- php - 移动文件夹后作曲家不加载类
- php - 集合中的 Laravel 切片
- selenium - Selenium 网络驱动程序 | 从excelsheet读取gmail的用户名和密码时出现异常
- kerberos - 使用 Java 和 Kerberos 以不同用户身份创建进程
- aws-sdk - 在 AWS 中创建 Glue 作业时如何修复 ResourceNumberLimitExceededException?
- c# - 如何存储大量二维三角形并使用范围查询有效地检索它们
- android - Android 模拟器和 Genymotion 模拟器打开但无法部署我的应用程序
- android - android studio中的颜色是私有的吗?