【发布时间】:2018-12-05 23:00:14
【问题描述】:
我正在用 nestjs 编写我的第一个 REST API。
我有几个实体,我必须为其定义基本的 CRUD 操作。 我想知道是否有一种方法可以创建一个我可以使用的基本 crud 服务,以便不对所有实体重复相同的代码。 在这个 base-crud 服务中,我将拥有四个调用存储库的 CRUD 方法,以便实际执行与数据库相关的工作。
基本上我希望有一个BaseCrudService<T>,而不是有一个UserService 和extends BaseCrudService<UserEntity>。
这样我可以“覆盖”派生类中的方法来做额外的逻辑业务,而不是调用基方法来实际插入、删除等。
有可能吗?如果是这样,你打算怎么做?
【问题讨论】:
-
您必须在控制器和服务上动态构造函数。 REST URL 中的参数可能是不可能的。也许您可以在服务器上创建某种工厂。干爽很好,但这可能比它的价值要多得多。我在 Angular 中减少了 DRY,因为我在组件上的代码变得复杂和混乱,这样我就可以拥有通用的 http 服务。因此,为了简单明了,我计划为我的应用程序的每个模块提供一个单独的 Nestjs 控制器和服务。
-
@Preston 感谢您的回复!是的,我了解控制器部分,但是服务和存储库呢?你认为这可能吗?我仍然会为每个控制器提供一项服务,但至少基本的 CRUD 操作将委托给基本的 CRUD 服务
-
我所知道的唯一方法是为每种类型的服务使用特定的存储库,就像承诺中的 membersRepository 和 Members 一样。我认为没有办法让相同的服务也适用于另一个 repo 和模型。
-
我明白了!感谢您的帮助:)
标签: nestjs