在 Node.js 中使用 Sequelize ORM 连接 MySQL 来创建 RESTful API

阅读时长 9 分钟读完

前言

在开发 Web 应用程序时,大多数情况下需要与数据库打交道。ORM(对象关系映射)是一种存储方式,它可以将数据库表转换为对象,简化了开发过程。

Sequelize 是 Node.js 开发的 ORM,它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL。本文将介绍如何使用 Sequelize ORM 连接 MySQL 数据库,并创建 RESTful API。

准备工作

在开始之前,需要确保已经安装了 Node.js 和 MySQL。可以使用以下命令检查是否已经安装:

如果没有安装,请参考官方文档安装。

安装 Sequelize 和相关库

可以使用以下命令安装 Sequelize 和相关库:

其中,

  • sequelize 是 ORM 库;
  • sequelize-cli 是 Sequelize 的命令行接口,可以帮助生成模型(Model)文件;
  • mysql2 是 MySQL 驱动库;
  • express 是 Web 应用程序框架;
  • body-parser 用于解析请求的数据。

创建数据库

使用以下命令进入 MySQL 控制台:

输入密码后进入后台,使用以下命令创建一个名为 mydb 的数据库:

创建模型

在 Sequelize 中,模型代表了数据库中的表。可以使用 Sequelize CLI 快速生成模型。

先使用以下命令初始化 Sequelize 项目:

初始化完成后,会生成如下目录结构:

  • config 目录存放 Sequelize 的配置文件;
  • migrations 目录存放用于表示数据库结构变化的文件;
  • models 目录存放 Sequelize 模型文件;
  • seeders 目录用于存放数据填充脚本,本文不涉及。

接下来使用以下命令创建一个新的模型文件:

这会在 models 目录下生成一个名为 user.js 的文件。

编辑 user.js 文件,更新如下:

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

这个文件定义了一个名为 User 的模型,包含两个字段:nameemail。这里没有定义关联关系,可以忽略 associate 方法。

连接数据库

编辑 config/config.json 文件,更新如下:

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

这里使用了与 MySQL 数据库相同的设置,你可以根据需要更改 usernamepassword 等值。

使用以下命令创建数据库表:

这个命令将自动运行 migrations 目录下的所有文件,执行数据库迁移操作。

在完成数据库表的创建后,可以测试连接是否成功。编辑 app.js 文件,更新如下:

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

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

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

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

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

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

这个代码片段使用 Sequelize 连接 MySQL 数据库,并验证连接是否成功。运行 app.js 文件:

如果使用默认端口运行应用程序,则访问 http://localhost:3000/ 将显示如下错误:

创建 RESTful API

在创建的 app.js 文件中,可以添加一个路由来创建 RESTful API:

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

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

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

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

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

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

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

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

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

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

这个代码片段创建了用于 GET 和 POST 请求的路由。其中:

  • app.get('/users', ...) 定义了用于获取用户列表的路由;
  • app.post('/users', ...) 定义了用于创建新用户的路由;

这些路由使用 Sequelize 操作数据库以获取和存储数据。

测试 API

使用以下命令重新启动应用程序:

现在可以使用 cURL 工具测试 API:

输出结果为:

表示当前数据库中没有任何用户。

现在可以创建新用户。使用以下命令创建新的用户:

命令执行成功后,输出为:

现在从数据库中检索所有用户。使用以下命令重新运行之前的 cURL 命令:

输出结果为:

这表示当前存在一个名为 "Alice" 的用户。

总结

本文介绍了如何使用 Sequelize ORM 连接 MySQL 数据库,并创建 RESTful API。无论是为初学者,还是为更有经验的开发人员,本文都提供了有用的信息和所有关键代码,希望这篇文章能对你的知识储备和技术成长有所帮助。

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

纠错
反馈