首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QueryBuilder中使用TypeORM与存储库有哪些不同的用例?

在QueryBuilder中使用TypeORM与存储库有哪些不同的用例?
EN

Stack Overflow用户
提问于 2019-11-06 02:22:48
回答 1查看 4.8K关注 0票数 13

我正在使用NestJS和TypeORM构建一个API。我一直在使用TypeORM 存储库API查询一个NestJS数据库文档部分数据库,主要是因为NestJS数据库文档部分提供了一个使用this.photoRepository.find()的示例。当我更进一步的时候,我注意到我的许多探索性搜索结果推荐使用TypeORM QueryBuilder API来提高性能和灵活性。

我感觉到,如果我决定切换我的数据库框架,Repository方法更容易用于简单的需求和一个很好的抽象。另一方面,在我看来,QueryBuilder更具有表现性和可定制性。

我们能概述一下QueryBuilder与TypeORM中存储库的不同用例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-06 08:35:26

与Repository相比,QueryBuilder API非常强大,更接近于SQL,因此任何更复杂或更受SQL驱动的东西都更容易通过它完成。这是您在使用QueryRunner使用原始SQL之前的最后一个“工具”,您可能不希望每次都使用它(因为它会使开发和重构更长)。

即使存储库更容易完成,也许您也不希望您的代码库允许在代码“拆分”代码时使用2API,但这完全取决于您的团队首选项。

存储库API更友好的地方在于获取关系,因为急切/懒惰的关系是从装饰器中解析出来的,您不必指定“联接”,而QueryBuilder暗示您显式地显示这些关系,否则它只获取主表(它忽略装饰器,SQL是第一公民)。

无论如何,即使您决定放弃Repository或repository,我仍然强烈建议您的查询总是很容易在专用类中找到(比如自定义存储库或专用服务),这样就不会在代码库中到处维护查询,重构数据访问如果不受控制的话是危险的。例如,我个人认为Repository上的" find“方法过于强大,并且不允许在专用服务/类/您决定的任何情况下使用这种API。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58722202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档