NodeJS数据库(mysql)连接与事务管理

时间:2017-12-01 14:49:55

标签: mysql node.js transactions promise connection

在NodeJS应用程序中,在涉及事务时管理连接数的最佳策略是什么(mysql社区版本)?

所以,这是我的思路 -

1)不要将控制权移交给ORM 2)将连接视为昂贵的商品 3)nodejs的mysql模块似乎正在创建更多连接

鉴于如果n promises同时执行(理解单线程部分),每个都代表一个事务,我不希望它们每个都创建n个连接 - 这很明显 - 但是当事务发生时会发生什么如果在promises之间共享连接,则需要在连接上回滚吗? ..如果另一个交易失败,我不希望一个交易失败。我希望这个交易能够实现。对象变得更加智能......因此,当调用beginTransaction时,它提供了一个本地化的上下文...但只是想确认是否是这种情况 - 我正在寻找一些文档。如果没有,某种FIFO队列便于对这些交易进行资格化似乎是前进的方向 - 但我们还没有这样做吗?你们部署的其他策略是什么?

1 个答案:

答案 0 :(得分:1)

我建议您使用KnexJS,特别是因为它的transaction supprt和内置connection pooling。我确定Sequelize也会以某种方式处理这个问题。

关于knex的好处是,你可以通过你的保证链传递这个var price = $('h1.count').text(); var parsedPrice = parseFloat(price.replace(/([^0-9\.])/g, '')); $parsedPrice.appendTo('h2.onlycount'); 对象,如果任何承诺失败(即使是非DB错误,就像业务规则一样!)将拒绝交易承诺,并自动回滚所有内容。

我希望这可以帮助你,并且已经工作了#34;对我们来说到目前为止 - 我们现在还不需要深入研究连接池的管理。