【发布时间】:2021-02-06 06:14:28
【问题描述】:
我使用 sequelize 事务编写了提交和回滚的代码。但是我不知道是否需要每次都声明它,通过在每个部分的顶部调用sequelize.transaction(),应该应用事务。
我想找到一种更有条理和可重用的方法。例如,我应该使用中间件还是某种设计模式?请告诉我。
--- 更新 --- 抱歉,上一个问题是错误的。
在 sequelize 中,问题是当资源访问受到事务隔离级别限制时该怎么办。
在高隔离级别下,如果同时访问一个资源,则会引发错误。有没有办法再试一次或做正确的事情?
在某些情况下甚至在表级别锁定 它直接访问数据库并释放锁。
【问题讨论】:
-
有自动将事务传递给所有查询和自动提交的功能。这可能有点帮助。 docs.sequelizejs.com/manual/tutorial/…
-
感谢您的回复。顺便问一下,如果查询是使用sequelize执行的,是不是出现错误会自动回滚呢?我认为这可能会导致内存泄漏,因为事务没有正常关闭。
-
如果一个或多个promise被拒绝,它会正确回滚。
-
非常感谢。但是即使不是sequelize返回的值,promise reject是否有效?
-
当然。确保交易承诺中的所有内容。 pastebin.com/qemZXYuZ
标签: node.js postgresql transactions sequelize.js