Node.js + MySQL - 处理事务

2024-01-06

我正在使用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(使用前将#替换为@)

Node.js + MySQL - 处理事务 的相关文章

  • 如何将滚动条更改为自定义设计? (避免使用默认浏览器外观)

    在新的 Gmail 中 您可以看到有一个滚动条 但它看起来与浏览器滚动条不同 怎样制作呢 你看到的是WebKit 特定的重新设计 http css tricks com custom scrollbars in webkit 浏览器的滚动条
  • Chrome 扩展程序不会从弹出文件加载我的 JavaScript

    我正在为论坛构建 Chrome 扩展程序 但问题是我的 popup html 的 JavaScript 不会执行任何操作 我在顶部添加了警报 popup js running 它确实出现了 但我的弹出窗口根本不显示 这是一个问题 因为弹出页
  • var io = require('../..')(server) 做什么?

    我已经构建了该项目https github com Automattic socket io tree master examples chat https github com Automattic socket io tree mast
  • Promise 和 setTimeout

    我正在尝试确定一种方法来 暂停 我的 Promises 代码 直到条件成立为止 也许可以使用递归setTimeout 对于我的简单示例 我手动设置waitValue 我需要等一下 如果waitValue仍然是错误的 那就只能继续等待了 当然
  • D3.js折线图溢出边距

    我有 d3 js 折线图 它作为 angular js 应用程序的指令包含在内 动态添加的线和 xAxis 以及缩放线上的边距溢出 我必须在图的顶部为每条加载的线创建 Ox 轴 并具有 Ox 和 Oy 单独的缩放可能性 Oy 缩放工作正常
  • 无法读取未定义的属性“isLoggedIn”

    此代码用于添加产品 然后添加到购物车和订单 并在后端使用 mongodb 创建 pdf 实际上 session isLoggedIn 是在 auth js 中定义的 检查该代码 但仍在 app js 中它给出了此错误 应用程序 JS代码 c
  • 在 Toad for MySQL 中执行 SELECT 语句时出现错误

    当我尝试执行一个简单的 SELECT 语句时 出现此错误Toad MySql Data Types MySqlConversionException Unable to convert MySQL date time value to Sy
  • Jquery 验证,在submitHandler() 中单击获取按钮

    我有两个按钮type Submit 验证后 在submitHandler我想知道点击了这些按钮中的哪一个 根据这一点 我想禁用该按钮 Handler add customer validate rules name required tru
  • 如何获取与值匹配或存在于另一个表中的记录?

    我试图弄清楚在这种情况下如何获取所有任务 其中两个字段等于某个值或者它们存在于另一个表中 这是查询 SELECT TASKS task id TASKS task title TASKS task description TASKS tas
  • 处理流星中的长服务器端计算

    我正在使用 jimp https www npmjs com package jimp https www npmjs com package jimp 在meteor JS中生成图像服务器端 换句话说 我正在使用递归算法 计算 图像的像素
  • 有没有办法使用 JavaScript 发送 CoAP 命令?

    我只是想知道是否有一种方法可以在浏览器中发送 CoAP 查询 使用 JavaScript 但不能使用 node js Thanks 不幸的是 这不可能直接实现 出于安全原因 Web 浏览器不为 UDP 套接字提供任何 JavaScript
  • XRegExp 没有后视功能?

    我需要在JavaScript中使用正则表达式的lookbehind 所以发现在 JavaScript 中模拟lookbehind 第 2 步 https gist github com slevithan 2387872 另外 我发现作者
  • 迭代 Javascript 对象[重复]

    这个问题在这里已经有答案了 我有一个 Javascript 对象 var a tag1 Stocks acctType1 individual compare1 contains match name1 scrapedaccounttype
  • MySQL Match() Against() 区分大小写

    目前 我的数据库是字符集Latin1意义 SELECT FROM TABLE MATCH column1 AGAINST words here IN BOOLEAN MODE 只会返回不敏感的搜索 但问题是我的数据库将通过不敏感和区分大小写
  • 尝试安装 gulp 时 npm 挂起

    UPDATED 当我尝试使用 npm install 或任何变体安装任何软件包时 npm install gulp g verbose npm install gulp verbose npm install gulp npm instal
  • 是否可以为 NodeJS 应用程序设置基本 URL?

    我希望能够在同一域下托管多个 NodeJS 应用程序 而不使用子域 例如 google com reader 而不是 images google com 问题是我总是输入网址的第一部分 例如Express NodeJS 中的 reader
  • Bot Framework openUrl 不适用于信使上的建议操作

    我正在使用 Bot Builder Node js sdk 创建 facebook 机器人 并尝试创建建议操作 该操作将用户导航到网页 我知道 facebook 有限制 它仅重定向到 https 端点 但由于我重定向到的页面是 https
  • 当父窗口关闭时关闭子窗口(弹出窗口)

    我有一个简单的示例页面 当您单击链接时 我正在使用弹出子弹出窗口进行处理 我一直在尝试各种卸载事件来在父窗口关闭时关闭子窗口 但似乎无法弄清楚我错过了与简单编码相关的内容 弹出窗口工作完美 但是关闭父窗口会使弹出窗口保持打开状态
  • 如何使用EventManager监听Angular中的window.resize事件?

    我从这个 stackoverflow 借用了一些代码 角度窗口调整大小事件 https stackoverflow com questions 35527456 angular window resize event答案的作者说我应该使用事
  • Angular:DOM更新后调用方法

    我正在从 html 调用一个方法 调用休息服务 来增加 减少屏幕上的计数 现在我想调用另一个方法 即 getThreshold 来检查计数是否达到阈值 如果是 我想显示一条确认消息 我想首先更新屏幕上的计数 然后调用该函数来检查它是否达到阈

随机推荐