【问题标题】:Nestjs Circular dependency forwardRef() drawbacksNestjs 循环依赖 forwardRef() 缺点
【发布时间】:2021-09-04 20:28:32
【问题描述】:

Official Circular dependency 说:

当两个类相互依赖时,就会发生循环依赖。例如,A 类需要 B 类,B 类也需要 A 类。在 Nest 中,模块之间和提供者之间可能会出现循环依赖。

虽然应尽可能避免循环依赖,但您 不能总是这样做。

不使用forwardRef()的原因是什么?

【问题讨论】:

    标签: nestjs circular-dependency


    【解决方案1】:

    循环依赖通常意味着你有紧密绑定的逻辑和可能不稳定的架构,不允许你扩展。如果你真的不想关心这个,你可以在任何你想要的地方添加forwardRef,构造函数和服务,但这可能会导致一些奇怪的、难以解决的错误,并且通常被视为一种不好的做法Nest 社区。​​p>

    【讨论】:

    • 非常感谢您的回复。我在 Auth 模块中使用 UserService.findUser 。并在 UserService 中使用 Auth 模块服务方法。您能否建议一种更好的方法来处理这种情况?目前,我将 User 服务方法移至 Auth 模块,而不是使用 forwardRef()。
    • Auth 通常是我看到紧密绑定逻辑的少数几个地方之一,这对紧密绑定是有意义的。我最终创建了一个与用户表有自己的连接的 AuthModule 和一个与用户表有另一个连接的 UserModule。最终重复了一些逻辑,但它阻止了循环引用的发生,我很感激。尽管如此,它在一定程度上变成了偏好。
    • 谢谢。我明白了。
    • @JasurbekNabijonov 我参加聚会有点晚了,但这就是你要做的。您有一个开放的休息 POST 'login',其中使用可以使用用户名/密码登录作为示例,此端点会返回一个 jwt 令牌。然后在端点上,例如 users/:id GET 您添加一个警卫,其中警卫检查 jwt 令牌是否有效。由于令牌由签名检查,因此此 dosnt 需要调用数据库。 Nestjs 有非常棒的文档,介绍了构建稳定的安全 API 所需的几乎所有内容:docs.nestjs.com/security/authentication
    猜你喜欢
    • 2021-07-19
    • 2021-01-16
    • 2020-06-30
    • 2021-10-15
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2010-09-12
    相关资源
    最近更新 更多