【发布时间】:2020-09-16 23:45:53
【问题描述】:
我正在开发一个基于 Express (Nodejs) 的 API,该 API 使用 MySQL 进行数据持久性。我试图遵循 R.C. 爵士提出的 CLEAN ARCHITECTURE。马丁。
长话短说:-
有一些作物供应商和一些用户。用户可以向供应商请求一些具有定义数量的作物的订单。这会将订单置于 PENDING 状态。然后供应商将确认他/她从用户那里得到的订单。
域/实体 -> CROP、用例 -> 添加、删除、编辑、查找、更新数量
域/实体 -> 订单、用例 -> 请求、确认、取消
我必须实现确认订单功能
- 我的数据库中有已记录的订单,其中包含已订购商品列表(订单处于待处理状态)
- 现在在确认订单操作时,我需要从数据库记录中存在的相应作物中减去每个项目数量,并检查没有值变为负数(即没有订购数量超过当前数量)
- 如果“交易覆盖”下的所有项目都完成了,那么我必须提交交易
- 否则恢复到以前的状态(即回滚)
我知道如何使用“Sequelize”来运行 Mysql 特定的事务,但是有很多耦合和糟糕的源代码架构。 (如果我那样做,那么 DB 就不再像插件了)
我无法理解如何在维护架构的同时执行此操作,以及在哪个层实现此事务、用例/数据访问或什么?
提前致谢
【问题讨论】:
-
建议分享您与问题一起完成的代码/工作的快照(不是图像,而是代码本身)。这将有助于找出可以做得更好的地方。
-
这几乎读起来像是一项主观任务——了解整个用例,然后项目代码来验证你的“紧密耦合”和“糟糕代码”的假设。建议 - 在 SO 上,您应该专注于提出非常具体的问题。在你最初的研究和努力之后也是如此。
标签: mysql node.js transactions sequelize.js clean-architecture