mysql - 如何在 "SQL Transactions"中实现 "Clean Architecture"?

标签 mysql node.js transactions sequelize.js clean-architecture

我正在研究基于 Express (Nodejs) 的 API,该 API 使用 MySQL 进行数据持久化。我试图遵循 R.C. 爵士提出的 CLEAN ARCHITECTURE。马丁。

长话短说:-

有一些裁剪供应商和一些用户。用户可以向供应商请求具有定义数量的某些裁剪的订单。这会将订单置于 PENDING 状态。然后供应商将确认他/她从用户那里得到的订单。

域/实体 -> CROP,用例 -> 添加、删除、编辑、查找、更新数量

域/实体 -> ORDER,用例 -> 请求,确认,取消

我必须实现确认订单功能

  • 我的数据库中有一个已记录的订单,其中包含已订购的项目列表(订单处于挂起状态)
  • 现在,在确认订单操作时,我需要从 DB 记录中存在的相应裁剪中减去每个项目数量,并检查是否没有任何值变为负数(即没有订购数量超过当前数量)
  • 如果“交易覆盖”下的所有项目都完成了,那么我必须提交交易
  • 否则恢复到之前的状态(即回滚)

  • 我知道如何使用“Sequelize”运行特定于 Mysql 的事务,但有很多耦合和糟糕的源代码架构。 (如果我这样做,那么 DB 将不再像插件一样)

    我无法理解如何在维护架构的同时做到这一点,以及在哪一层实现这个事务、用例/数据访问,或者什么?

    提前致谢

    最佳答案

    我建议使用“工作单元”模式将事务保存在“适配器层”中。这样,数据库仍然是业务逻辑的插件。

    关于mysql - 如何在 "SQL Transactions"中实现 "Clean Architecture"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62085401/

    相关文章:

    Spring、Hibernate 事务。加入 A 中创建的线程 B 中的事务。可能吗?

    php - header 位置 : function not working in my code

    node.js - 当我使用 Node js 设置 404 时,它在我重新加载我的页面时不起作用

    mysql - 在事务中,如何在事务完成之前阻止读取受影响的行?

    javascript - 如何在嵌套文档中填充对模型的多个引用?

    javascript - Alexa Just Listen 调用名称然后闪烁并停止?

    c# - CaSTLe ActiveRecord - 总是更新 child ,为什么?

    PHP MYSQL 查询 AS 更大的问题

    MySql 查询 : by simply appending another column to the query, 然后什么都不返回

    mysql - MySQL 'OR' 和两个 SELECT 语句是否具有相同的复杂性?