Sequelize 和 TypeScript 的结合实践

阅读时长 14 分钟读完

在现代 Web 应用程序中,数据库操作是不可或缺的一部分。 Sequelize 是一个流行的对象关系映射(ORM)框架,可以与多种关系型数据库一起使用。 TypeScript 是一个强类型的 JavaScript 超集,可以提高代码的可读性和可维护性。本文将介绍如何在 TypeScript 项目中使用 Sequelize,并提供一个示例应用程序来演示其实践。

安装

在使用 Sequelize 前,需要先安装它及其相关的依赖。可以通过 npm 安装:

  • sequelize: Sequelize 的主要依赖
  • sequelize-typescript: Sequelize 的 TypeScript 版本
  • mysql2: MySQL 驱动
  • @types/sequelize: Sequelize 的 TypeScript 类型定义
  • @types/mysql2: MySQL 驱动的 TypeScript 类型定义

配置

在使用 Sequelize 时,需要配置数据库连接。在 TypeScript 项目中,可以创建一个 sequelize.ts 文件,定义数据库连接和 Sequelize 实例。以下是一个示例配置:

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

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

------ ------- ----------
展开代码

上述代码创建了一个 Sequelize 实例,并定义了数据库连接信息。其中,databaseusernamepassword 分别是数据库名称、用户名和密码,dialect 是数据库类型。models 是一个数组,包含 Sequelize 模型的定义文件路径。

定义模型

在 Sequelize 中,模型是指表格的定义。可以通过 TypeScript 类来定义 Sequelize 模型。以下是一个示例模型定义:

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

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

  ---------
    ----- ----------------
    ---------- ------
  --
  ------- -------
-
展开代码

上述代码定义了一个 User 模型,它有两个属性:nameemail@Table 装饰器用于指定表格的名称,如果未指定,则使用类名作为表格名称。@Column 装饰器用于指定列属性。在这个示例中,nameemail 都是字符串类型,且不能为空。

数据库操作

在定义了模型后,就可以使用 Sequelize 进行数据库操作了。以下是一些常见的操作示例:

查询

上述代码首先验证了数据库连接,然后查询了所有用户记录,并将结果打印到控制台。

插入

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

------ -- -- -
  ----- -------------------------
  ----- ---- - ----- -------------
    ----- --------
    ------ --------------------
  ---
  ---------------------------
-----
展开代码

上述代码首先验证了数据库连接,然后插入了一条新的用户记录,并将结果打印到控制台。

更新

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

------ -- -- -
  ----- -------------------------
  ----- ---- - ----- -----------------
  --------- - ------
  ----- ------------
  ---------------------------
-----
展开代码

上述代码首先验证了数据库连接,然后查询了 ID 为 1 的用户记录,将其名称修改为 Bob,并保存到数据库中。最后将结果打印到控制台。

删除

上述代码首先验证了数据库连接,然后查询了 ID 为 1 的用户记录,将其从数据库中删除。

示例应用程序

为了演示 Sequelize 和 TypeScript 的结合实践,我们将创建一个简单的 Web 应用程序,它可以管理用户记录。以下是应用程序的要点:

  • 使用 Express 框架
  • 使用 EJS 模板引擎
  • 使用 Sequelize 和 MySQL 数据库
  • 使用 Bootstrap 样式
  • 实现用户记录的 CRUD 操作

在开始之前,请确保已经安装了上述依赖。以下是应用程序的目录结构:

-- -------------------- ---- -------
----
  ------------
    -------
  -------
    -------
  ------
    ---------
    --------
  ------
展开代码

模型定义

首先,我们需要定义一个 User 模型。在 models/user.ts 文件中,添加以下代码:

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

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

  ---------
    ----- ----------------
    ---------- ------
  --
  ------- -------
-
展开代码

控制器

接下来,我们需要定义一个控制器来处理用户记录的 CRUD 操作。在 controllers/user.ts 文件中,添加以下代码:

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

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

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

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

------ ----- ------ - ----- ----- -------- ---- --------- -- -
  ----- -- - ----------------------
  ----- ---- - ----- ------------------
  ----- ---------------
  ------------------
--
展开代码

上述代码定义了四个控制器方法:

  • index: 查询所有用户记录,并渲染 views/index.ejs 模板。
  • edit: 根据 ID 查询用户记录,或者创建一个新的用户记录,并渲染 views/edit.ejs 模板。
  • save: 根据 ID 更新或者创建用户记录,并重定向到首页。
  • remove: 根据 ID 删除用户记录,并重定向到首页。

视图模板

最后,我们需要定义两个视图模板:views/index.ejsviews/edit.ejs。以下是它们的代码:

views/index.ejs

-- -------------------- ---- -------
--------- -----
------
  ------
    --------------------
    ----- ---------------- ---------------------------------------------------------------------------------------
  -------
  ------
    ---- ---------------- ------
      --------------
      ----- ------------ ---------- ---------------- ------------
      ------ --------------
        -------
          ----
            -------------
            --------------
            ---------------
          -----
        --------
        -------
          -- --- ------ ---- -- ------ - --
            ----
              ------- --------- -------
              ------- ---------- -------
              ----
                -- --------------- ------- --- ---------- ------ ---------------------
                -- ----------------- ------- --- ---------- ------ ----------------------
              -----
            -----
          -- - --
        --------
      --------
    ------
  -------
-------
展开代码

views/edit.ejs

-- -------------------- ---- -------
--------- -----
------
  ------
    ---------- ------- - ------ - ----- -- ------------
    ----- ---------------- ---------------------------------------------------------------------------------------
  -------
  ------
    ---- ---------------- ------
      ------- ------- - ------ - ----- -- ---------
      ----- ------------- ---------------- ------- - --- - ------- - -- ----
        ---- -------------------
          ------ ------------------------
          ------ ----------- -------------------- --------- ----------- ---------- --------- -- -- ----
        ------
        ---- -------------------
          ------ --------------------------
          ------ ------------ -------------------- ---------- ------------ ---------- ---------- -- -- ----
        ------
        ------- ------------- ---------- --------------------------
        -- -- --------- - --
          -- -------- ---------- -------------------------
        -- - --
      -------
    ------
  -------
-------
展开代码

应用程序入口

最后,我们需要在 app.ts 文件中编写应用程序的入口代码:

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

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

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

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

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

------ -- -- -
  ----- -------------------------
  ----- -----------------
  ---------------- -- -- -
    ---------------- -- ------- -- ------------------------
  ---
-----
展开代码

上述代码定义了 Express 应用程序,设置了 EJS 模板引擎和 bodyParser 中间件。然后定义了四个路由,分别对应用户记录的 CRUD 操作。最后,验证数据库连接并启动应用程序。

结论

在本文中,我们介绍了如何在 TypeScript 项目中使用 Sequelize,并提供了一个示例应用程序来演示其实践。通过结合 Sequelize 和 TypeScript,可以提高代码的可读性和可维护性,使得开发 Web 应用程序更加高效和愉悦。希望本文对你有所帮助,祝你在前端领域取得更多的成就!

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

纠错
反馈

纠错反馈