Sequelize.js 事务 (Transaction)

阅读时长 3 分钟读完

事务是在保持数据库数据一致性的前提下,将多个操作作为一个整体执行的方法。Sequelize.js 是 Node.js 中比较流行的 ORM 框架,提供了方便的事务实现。

开始一个事务

在 Sequelize 中,可以使用 sequelize.transaction() 方法来创建一个事务。

该方法返回一个 Promise,需要使用 await 关键字或 .then() 方法来接收返回的事务对象。

操作

创建好一个事务后,需要将需要执行的多个操作放在一起,形成一个整体,只有当所有操作都成功执行时,整个事务才会被提交。

以下是一个简单的事务示例,将两个操作作为一个整体执行。

在这个示例中,ModelA 和 ModelB 是 Sequelize 的数据模型,create() 方法是创建数据的操作。注意,在调用 create() 方法时,需要将 transaction 对象传递给选项参数中。

回滚事务

有时,某个操作失败了,可能会影响到后续操作,这时我们需要回滚整个事务。

在 Sequelize 中,可以使用 rollback() 方法来回滚事务。

以下是回滚事务的示例:

-- -------------------- ---- -------
--- -
  ----- --------------------------- ------------- -- -
    ----- --------------- --- -- - ----------- ---
    ----- --------------- --- -- - ----------- ---
    ----- --- ----------- ----- ------------
  ---
- ----- ------- -
  ---------------------
-

当 create() 方法执行失败时,会抛出一个异常,这时事务会被自动回滚。

总结

使用事务可以保证数据库数据的一致性,是个非常实用的技术。在 Sequelize 中,使用 sequelize.transaction() 方法来创建一个事务对象,将需要执行的操作放在事务中,保持操作的原子性。回滚操作使用 rollback() 方法来实现。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64857d3148841e989444db77

纠错
反馈