使用 Node.js 和 Sequelize 实现关系型数据库的操作

阅读时长 11 分钟读完

介绍

Node.js 是一个流行的服务器端 JavaScript 运行环境,用于构建高可靠性、高扩展性的应用程序。Sequelize 是一个基于 Node.js 的 ORM(Object-Relational Mapping) 框架,它可以帮助我们代码化地访问和管理关系型数据库。

本文将介绍如何使用 Node.js 和 Sequelize 来实现关系型数据库的常见操作,其中包括如何连接数据库、创建表、插入数据、更新数据、删除数据以及查询数据。

创建项目

在开始之前,首先需要创建一个新的 Node.js 项目。如果您已经有现成的 Node.js 项目了,可以直接跳过这一步。

  1. 安装 Node.js 和 npm

    Node.js 官网 下载并安装 Node.js,安装完成后会自动安装 npm。您可以在终端窗口中输入以下命令来验证是否安装成功:

    如果返回版本号,表示 Node.js 和 npm 已经正确安装。

  2. 创建新的 Node.js 项目

    在终端窗口中创建一个新的 Node.js 项目,执行以下命令:

    按照提示输入您的项目信息即可。

  3. 安装 Sequelize 和相关模块

    在项目根目录运行以下命令来安装 Sequelize 和相关模块:

    • sequelize:Sequelize 的主模块,提供对关系型数据库的访问和管理。
    • sequelize-cli:Sequelize 的命令行工具,用于创建数据表、填充初始数据、生成模型等。
    • mysql2:MySQL 数据库驱动程序,用于连接 MySQL 数据库。

连接数据库

在 Node.js 中使用 Sequelize 访问数据库,需要首先建立与数据库的连接。在本例中,我们使用 MySQL 数据库进行演示。在项目根目录下创建一个 index.js 文件,输入以下代码来建立连接和关闭连接:

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

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

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

其中:

  • database_name:数据库名称,需要自行替换为实际的数据库名称。
  • username:数据库用户名,需要自行替换为实际的用户名。
  • password:数据库密码,需要自行替换为实际的密码。
  • host:数据库服务器地址,默认为 localhost
  • dialect:数据库类型,本例中为 MySQL。

运行 node index.js 命令即可连接数据库。

创建表

在建立好与数据库的连接之后,我们需要定义数据表的模型。模型是 Sequelize 中与某张数据表对应的 JavaScript 类,它用于描述数据表的结构和约束条件。

在使用 Sequelize 创建数据表前,需要先安装 Sequelize CLI,并使用它来生成数据表的模型。

  1. 全局安装 Sequelize CLI

    执行以下命令来全局安装 Sequelize CLI:

  2. 初始化 Sequelize 项目

    在项目根目录中执行以下命令来初始化 Sequelize 项目:

    这个命令会在项目根目录下生成一个 config 文件夹和一个 models 文件夹。

  3. 生成数据表的模型

    在终端中执行以下命令来生成数据表的模型:

    其中:

    • User:数据表的名称。
    • name:string,email:string,password:string:定义 User 数据表中的字段、类型和约束条件。

    运行完后,models 文件夹下会生成一个名为 User.js 的文件,它就是 User 数据表的模型。

  4. 同步数据表结构

    在代码中引入 User 模型,并使用 sequelize.sync() 方法将模型与数据表同步:

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

    其中:

    • force: true:表示如果数据表已经存在,则删除后重新创建。

运行 node index.js 命令即可创建 User 数据表。

插入数据

User 数据表中插入一条新数据,可以使用 User.create() 方法。

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

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

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

其中:

  • User.create():创建一条新记录,并插入到数据库中。
  • .then(user => console.log(user.toJSON())):输出插入成功的数据记录。

运行 node index.js 命令即可插入一条新数据到 User 数据表中。

更新数据

User 数据表中更新一条数据,可以使用 User.update() 方法。

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

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

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

其中:

  • User.update():更新指定条件的数据记录。
  • { where: { id: 1 } }:更新条件,本例中表示更新 id1 的数据记录。
  • .then(() => console.log('Data updated successfully.')):输出更新成功的提示信息。

运行 node index.js 命令即可更新 User 数据表中 id1 的数据记录的 name 字段为 Jane Doe

删除数据

User 数据表中删除一条数据,可以使用 User.destroy() 方法。

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

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

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

其中:

  • User.destroy():删除指定条件的数据记录。
  • { where: { id: 1 } }:删除条件,本例中表示删除 id1 的数据记录。
  • .then(() => console.log('Data deleted successfully.')):输出删除成功的提示信息。

运行 node index.js 命令即可删除 User 数据表中 id1 的数据记录。

查询数据

User 数据表中查询数据,可以使用 User.findAll() 方法。

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

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

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

其中:

  • User.findAll():查询数据表中所有数据记录。
  • .then(users => console.log(users.map(user => user.toJSON()))):输出查询到的所有数据记录。

运行 node index.js 命令即可查询 User 数据表中的所有数据记录。

总结

通过本文的学习,我们了解了如何使用 Node.js 和 Sequelize 来连接、操作关系型数据库,包括创建连接、创建数据表、插入数据、更新数据、删除数据和查询数据。掌握这些基本的数据库操作,可以为我们后续的开发工作打下坚实的基础。

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

纠错
反馈