如何在 Express.js 中使用 Sequelize 实现事务处理

阅读时长 6 分钟读完

在编写应用程序时,事务处理是必须考虑的问题。特别是当需要在应用程序中进行复杂操作,例如涉及数据库事务处理时,事务处理就显得尤为重要。Express.js 是一款流行的 web 框架,而 Sequelize 可以作为 ORM(对象关系映射)库用于轻松地进行 SQL 数据库操作。在本文中,我们将探讨在 Express.js 中如何使用 Sequelize 实现事务处理。

事务处理简介

在数据库中,事务是一系列操作(SELECT、UPDATE、DELETE、INSERT 等),它们被视为单个、原子性的操作。事务被认为是基于 ACID 属性(原子性、一致性、隔离性、持久性)的。如果一个事务的某些操作失败,则所有操作都应该回滚。换句话说,如果事务中的任何操作失败,则不应修改数据库并将其撤消,保持原有状态。

在 Express.js 中使用 Sequelize 的必要条件

在使用 Sequelize 进行事务处理之前,需要确保已安装 Sequelize 库以及支持的数据库。您需要安装以下库:

  • express:用于创建 Web 应用程序的 JavaScript 框架。

  • sequelize:用于在 Node.js 中进行 SQL 操作的对象关系映射(ORM)库。其中,你需要安装 Sequelize 中定义的常用模块,例如 sequelize、Sequelize等。

  • mysql2 或 PostgreSQL :支持的数据库驱动程序。您也可以使用其他数据库,如 SQLite、MariaDB 等,只需安装适当的驱动程序即可。

如果您未安装上述依赖项,请先安装这些依赖项,然后按照本文中的说明操作。

在 Express.js 中使用 Sequelize 实现事务处理

在 Express.js 中使用 Sequelize 实现事务处理的关键是建立数据库连接,创建 Sequelize 实例并使用 sequelize.transaction() 方法来设置和提交事务。

首先,在您的项目中安装 express 和 sequelize:

然后,在 index.js 文件中添加以下代码,建立数据库连接和 Sequelize 实例:

现在,我们已经建立了与数据库的连接,并可以使用 Sequelize 实例执行 CRUD(创建、读取、更新、删除)操作。下面我们将介绍如何使用 Sequelize 实现事务处理。

使用 Sequelize 实现事务处理的示例代码

下面我们来实现一个以 Express.js 和 Sequelize 为基础的事务处理示例。我们将创建一个名为 "transactions" 的表,该表包含 "id" 和 "value" 两个字段。然后我们将编写一个路由程序,该程序可接收来自前端的请求并将数据写入数据库中。如果事务中的任何操作失败,则回滚并返回错误消息。

首先,我们需要定义模型。在 models 目录中创建一个名为 "transaction.js" 的文件,存储以下代码:

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

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

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

现在,我们建立了与数据库中 "transactions" 表的连接。

接下来,我们需要编写代码来启动事务并将数据写入数据库中,代码示例如下:

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

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

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

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

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

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

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

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

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

当应用程序在执行上述代码时,将启动一个 Express.js 服务器,并等待来自前端的 POST 请求。在 API 路由器 "/create-transaction" 处理程序中,我们使用 sequelize.transaction() 方法来启动事务。然后,我们使用 create() 方法插入一行到数据库中,接着使用 update() 方法更新该行。如果事务中的任何操作失败,则会回滚整个事务。

如果一切顺利,它将返回以 JSON 格式表示的数据,包含创建的事务,否则将返回 "Failed to create transaction." 错误消息。

结论

在 Express.js 中使用 Sequelize 实现事务处理非常方便,它还允许您轻松地启动事务,进行 CRUD 操作,并在错过失败的情况下回滚整个事务。本文提供了详细的指南和示例,帮助您了解如何在您的应用程序中使用 Sequelize 实现事务处理。

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

纠错
反馈