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

前言

在开发 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


猜你喜欢

  • # SSE 服务器推送长轮询间隔设置

    SSE 服务器推送长轮询间隔设置 什么是SSE SSE全称为Server-Sent Events,是一种用于服务器向浏览器单向发送数据的技术。与WebSocket不同,SSE不需要客户端建立连接,服务...

    1 年前
  • React SPA 应用中使用 React-Redux 实现数据管理

    前言 在现代 Web 开发中,单页应用 (Single-page applications, SPA) 的开发越来越受到关注,因为它们提供了更流畅的用户体验,并且允许我们构建类似移动应用的交互式 We...

    1 年前
  • 关于前端自动化构建工具 Babel, Gulp, Webpack 的梳理

    前端开发在不断发展,技术更新速度也很快,必须及时跟上前端最新技术的潮流。自动化构建功能成为了开发者更快速开发的重要工具,而 Babel、Gulp 和 Webpack 是其中比较常见的三种工具。

    1 年前
  • 在 React 中处理文件上传的最佳实践

    文件上传是 Web 应用中常用的功能之一。在 React 中,处理文件上传的最佳实践需要考虑到以下几个方面:文件类型的限制、文件大小的限制、进度展示、以及错误处理。

    1 年前
  • 使用 ESLint 检查 JavaScript 项目中的错误语法

    在前端开发中,JavaScript 是必不可少的语言之一。但是,由于每个开发者都有自己的习惯和代码风格,因此当我们合并多个人的代码时,可能会导致代码中出现错误语法和潜藏的 bug。

    1 年前
  • ECMAScript 2021 中的模板字符串

    随着前端技术的迅猛发展,ECMAScript (简称 ES) 成为了前端开发中不可或缺的一部分。ES 在每年的更新中都会加入新的特性,其中模板字符串 (Template String) 是 ES6 中...

    1 年前
  • 在 Angular 中使用 Ngx-translate 进行多语言应用开发

    随着全球化和国际化的发展,越来越多的网站和移动应用需要支持多种语言。在 Angular 中,我们可以使用 Ngx-translate 库来实现多语言应用开发。本文将介绍 Ngx-translate 的...

    1 年前
  • 使用 ARIA 标记让你的页面更具可访问性

    随着 Web 技术的不断发展,Web 应用的用户也变得越来越多样化,许多人需要通过辅助技术来访问 Web 应用,但是由于许多 Web 应用都没有考虑到可访问性问题,导致用户无法完全体验 Web 应用的...

    1 年前
  • 响应式设计中如何使用媒体查询来实现更多的特性?

    随着移动设备的普及,越来越多的网站需要适应不同的屏幕尺寸和设备。响应式设计就是为了解决这个问题,让网站能够在不同的屏幕尺寸下正常显示并提供良好的用户体验。 媒体查询是实现响应式设计的关键技术之一。

    1 年前
  • LESS 中的变量作用域详解

    在 LESS 的编程中,变量是经常使用的一个功能,它可以帮我们存储一些重复出现的值,如颜色、字体等。但是,当我们在编写代码时,就会遇到变量作用域的问题,这就需要我们掌握 LESS 变量作用域的特点。

    1 年前
  • 使用 PM2 构建高度可用的 Node.js 应用

    在 Node.js 的应用开发中,高可用性是非常重要的一个问题。在实际应用中,我们需要保证应用的持久性,保证应用的健壮性,同时也要保证应用的可扩展性和高性能。在这篇文章中,我们将介绍如何使用 PM2 ...

    1 年前
  • 解决使用 ES8 对象函数参数默认值产生的变量共享问题

    解决使用 ES8 对象函数参数默认值产生的变量共享问题 在 ES8 中,提供了一种方便的方式来设置函数参数的默认值。使用默认参数可以简化代码并提高代码的可读性。但是,在使用 ES8 对象函数参数默认值...

    1 年前
  • Sass 中 at-root 指令使用方法详解

    在 Sass 中,我们经常会嵌套多层样式规则来控制样式的层次感和结构性。但是,有些情况下我们需要样式规则跳出嵌套规则,例如全局样式或者需要控制页面元素的层级,这时 at-root 指令就非常有用了。

    1 年前
  • 如何在 Mongoose 中使用缓存提升查询性能

    如何在 Mongoose 中使用缓存提升查询性能 在应用程序中,数据库查询是常见的操作,对于复杂的查询,则需要更多的处理时间和计算资源,因此利用缓存可以节省时间和资源,提高查询性能,本文将介绍如何在 ...

    1 年前
  • Angular + RxJS:处理时间序列数据

    Angular 是一个开源的前端框架,RxJS 是 Reactive Extensions 的 JavaScript 实现,是一个强大的工具集,用于管理异步编程。Angular 和 RxJS 的结合可...

    1 年前
  • 如何使用 Chai-XML 进行 XML 文档的测试

    本文将介绍 Chai-XML 的使用方法,让你能够轻松地对 XML 文档进行测试。通过本文的学习,你将能够掌握如何使用 Chai-XML 进行 XML 文档的测试,提高前端代码的质量和稳定性。

    1 年前
  • JavaScript 模块化编程:入门指南

    在大型的前端项目中,JavaScript 往往会变得非常复杂和难以维护。这时候,模块化编程就显得尤为重要。模块化编程可以将代码分割成多个相互依赖但又互相独立的模块,这样可以将代码分工明确,减少重复代码...

    1 年前
  • 解决 Express.js 中的跨站点请求伪造问题

    在前端开发中,经常会碰到跨站点请求伪造(CSRF)的问题,尤其是在使用 Express.js 所构建的 Web 应用程序中。CSRF 攻击可以在用户不知情的情况下执行一些危险的操作,如修改用户密码,删...

    1 年前
  • 在 Node.js 中使用 Koa Redux 构建应用

    Koa Redux 是一种在 Node.js 中构建应用的方式,它结合了 Koa 和 Redux 的优点,使开发更加高效和简单。在本文中,我们将详细介绍如何使用 Koa Redux 构建一个应用,并提...

    1 年前
  • Web Components 中的组件生命周期钩子详解

    Web Components 是一种构建可重用 UI 组件的标准,它可以帮助开发者更加高效地重用组件,以及更加灵活地构建 Web 应用。在 Web Components 中,组件的生命周期非常重要,因...

    1 年前

相关推荐

    暂无文章