乐趣区

关于node.js:关于项目中-Repository-层的思考

前言
对于我的项目中是否须要 Repository 层?这个问题,如同没有必定的答案,上面是我的思考分享给大家,不喜勿喷。

Repository 的定位
我了解 Repository 是个大仓库,外面能够有 MySQL、Redis、MongoDB … 等数据。

保护这一层的开发者,能够称为 仓库管理员,当使用者须要查问数据的时候,须要通知仓库管理员,由仓库管理员拿给他,至于仓库管理员从哪拿的数据,使用者无需关系。

同理,当须要创立或更新数据的时候,也须要通知仓库管理员,由仓库管理员进行操作数据。

总结:Repository 次要是封装数据的查问、创立、更新、删除等逻辑,供使用者调用。

Repository 的实现
可配置条件查问
可配置数据转换
可配置数据验证
解释下“可配置数据转换”:当咱们须要返回隐衷性字段时,例:如手机号,如果使用者无数据权限时,手机号字段两头 4 位须要进行加 * 解决,还有解决返回的工夫格局等。

如果你应用的是 Laravel 框架,能够参考下 andersao/l5-repository

Repository 的接口
Repository 层的接口能够了解为契约(可理解下 Laravel Contracts 目录),它是受 Domain 驱动的,Repository 中定义的性能要体现 Domain 的用意和束缚。Domain 须要什么我才提供什么,不须要的我不会提供。

例如,接口名能够定义为 searchUsersById、searchUsersByName,不能够定义为 searchUsersByInfo,查问的字段也不倡议设置为 *,仅查问须要的字段进行返回。

什么是 Domain?能够了解为畛域层。

小结
应用 Repository 层有利有弊,弊病就是有些繁琐,没有 ORM 一把梭的顺畅。当然长处也有很多,次要是前期的可维护性大大提高。

列举一些长处:

更换、降级 ORM 引擎时,不影响业务逻辑;
便于单元测试,可用 Mock 对象代替理论的数据库存取;
以上,心愿对你可能有所帮忙。

最初
如果你感觉此文对你有一丁点帮忙,点个赞。或者能够退出我的开发交换群:1025263163 互相学习,咱们会有业余的技术答疑解惑

如果你感觉这篇文章对你有点用的话,麻烦请给咱们的开源我的项目点点 star:http://github.crmeb.net/u/defu 不胜感激!

PHP 学习手册:https://doc.crmeb.com
技术交换论坛:https://q.crmeb.com

退出移动版