我正在使用express和node-mysql驱动程序在node.js上构建一个应用程序。当我需要进行一系列数据库插入/更新时,我的应用程序中有几种情况。我希望它们在一个事务中,这样如果第二个或第三个失败,以前的插入将完全回滚。
目前,我这样做的方法是使用某种中间件来执行以下操作:START TRANSACTION
当请求到达时。在处理请求的过程中,如果抛出任何错误,我会捕获此错误,并执行ROLLBACK
。如果没有发生错误,我会执行COMMIT
在将响应发送到浏览器之前。
然而,我现在担心,当多个用户同时访问应用程序时,这将不起作用,因为如果另一个请求尝试开始它自己的事务,MySQL 会强制提交START TRANSACTION
!我目前仅使用一个节点实例和一个 MySQL 连接来处理所有请求。
如果我的担忧是合理的,有人可以建议我吗?我应该如何获得交易支持?
查看https://github.com/bminer/node-mysql-queues https://github.com/bminer/node-mysql-queues
我为 node-mysql 实现了一个小包装器来支持事务和多个语句。它尚未经过测试,也尚未准备好投入生产……但几天后就会准备好。 :)
UPDATE:我现在已经非常彻底地测试了这个库......应该很好!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)