【问题标题】:How does one inject providers into an entity from the typeorm database?如何将提供者从 typeorm 数据库注入到实体中?
【发布时间】:2021-10-22 03:40:46
【问题描述】:

我需要在实体中获取 ClientProxy,我在构造函数的帮助下完成,但最后变量未定义

实体

constructor(
    @Inject('NAME') private messageClient: ClientProxy
) {
    super();
}

如果禁用 messageClient 变量,则它等于未定义。如何将提供者从 typeorm 数据库注入到实体中?

【问题讨论】:

  • 为什么要向实体中注入一些东西?
  • 我需要从实体发送 messageClient.send
  • 但是为什么呢?为什么要将业务逻辑绑定到您的 DAO?
  • 为了粘合属性,需要通过参数进一步搜索属性
  • 我不明白你为什么要这样做。向 DAO 添加业务逻辑几乎被认为是一种反模式。

标签: node.js nestjs typeorm


【解决方案1】:

是否无法将 clientproxy 传递给实体

不,就像我提到的那样,您可以通过某种 setter 从服务中传递它。

我在实体中描述@AfterLoad()

您可能希望使用位于 NestJS DI 系统中的 Entity Subscriber instead


就个人而言,我仍然建议您在服务中执行此操作,而不是将逻辑绑定到您的数据访问对象。在我看来,DAO 应该是相当愚蠢的,并且应该只存在于数据库实体和代码的映射中。如果您确实继续追求这一点,就像我说的那样,请查看 Nest 为 TypeORM 提供的实体订阅者。虽然您不能(也不应该)对实体本身进行注入,因为它由 TypeORM 管理,但您可以与订阅者合作。

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 2020-06-02
    • 1970-01-01
    • 2015-11-11
    • 2019-07-26
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多