node.js - Node -orm-事务 : is it possible to perform transactions in one mysql connection for all clients?

标签 node.js node-mysql node-orm2

目前,当我启动 Node 应用程序时,我仅连接到数据库一次,之后我加载所有模型,之后我的应用程序准备好通过 socket.io rpc 处理任何请求。

我需要实现这样的逻辑 - 如果客户端执行复杂的请求,并且如果链中至少有一个操作失败 - 例如 - 所有 sql 请求均已成功完成,但未发送带有新密码的电子邮件 - 回滚所有内容并显示错误。

我问,因为我记得 - 例如在 php 中,所有进程都与数据库有不同的连接,这就是为什么所有事务都是独立的并且不能交叉,但对于 Node 来说,它只是一个具有异步请求的进程,理论上是这样可以穿越。这只是我在 Node.js 上的第一个应用程序。

是否可以为所有客户端建立1个mysql连接,或者我需要连接到mysql,在socket.io中的每个请求中从远程文件检索所有模型?

最佳答案

我不建议通过单个连接完成所有操作。对于每个传入请求进行连接、查询、断开连接是 Node.js 中的常见模式。如果您使用请求池,这对于大多数用例来说应该足够快。

关于node.js - Node -orm-事务 : is it possible to perform transactions in one mysql connection for all clients?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18202980/

相关文章:

javascript - Node/Express 待处理请求

node.js - node-orm2 中的引用键

javascript - 我怎样才能在node-orm2的每个函数中做一些异步的事情?

objective-c - 有没有办法将 Node.JS 与 Objective-C/iPhone SDK 集成?

node.js - 如何从命令行在 Node.js 上运行 Jasmine 测试

mysql - NodeJS/mysql2 中的重叠

node.js - 用于 Postgres 空间索引的 Node Js ORM(如 PostGIS)

javascript - 无法循环遍历 NodeJS 中的 JSON 对象

node.js - 为所有控制台消息添加时间戳

mysql - Sequelize 在收到 SequelizeDatabaseError : ER_LOCK_DEADLOCK 后正在创建悬空/挂起的 mysql 连接