Node.js 中使用 Sequelize 进行 ORM 操作的详细教程

简介

Sequelize 是一个基于 Node.js 的 ORM 框架,可以在 Node.js 中操作各种不同类型的数据库。ORM(Object-Relational Mapping)是一种编程技术,它可以将面向对象语言中的对象转换为关系型数据库中的表。

在本篇文章中,我们将详细介绍如何使用 Sequelize 在 Node.js 中进行 ORM 操作。我们将从安装 Sequelize 开始,一步一步讲解它的用法,并给出代码示例以帮助读者更好地理解。

安装

首先需要在 Node.js 中安装 Sequelize。在命令行中执行以下命令:

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

连接数据库

在使用 Sequelize 前,需要先连接数据库。在使用 Sequelize 时,我们需要传递一些数据库连接信息,如数据库名称、用户名、密码等。在本例中,我们将使用 MySQL 数据库。

在项目中创建一个 config.json 文件,用于存储数据库连接信息:

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

接下来再创建两个文件:

  • db.js:用于创建 Sequelize 实例并连接数据库。
  • sequelize.js:用于获取 Sequelize 实例。

db.js

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

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

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

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

sequelize.js

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

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

上述代码中,我们使用了环境变量获取当前运行环境(开发环境、测试环境或生产环境),在 config.json 中获取相应的数据库连接配置,并创建 Sequelize 实例和连接数据库。我们还测试了连接是否成功,并输出了连接成功或失败的信息。

创建表格

在 Sequelize 中,我们使用模型(Model)来管理数据表。所谓模型就是指一张数据表对应的 JavaScript 类。通过 Sequelize,我们可以将查询语句转换为可用的 JavaScript 方法,使用方便。

在这里我们需要创建一个 Book 模型,用于对数据库的 book 表进行操作。首先需要在 models 目录下创建一个 book.js 文件,写入下面的代码:

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

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

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

上述代码中,我们首先引入了 Sequelize 和我们刚刚创建的 sequelize.js 文件。此外,我们使用 define 方法创建了一个名为 Book 的模型,并定义了 book 表格的属性。其中,id 实为主键,且这个值是自增的;title、author、isbn、publishedAt 是各自对应的字段,都不能为空。

增删改查(CRUD)

有了模型后,我们就可以进行增删改查操作了。下面我们将分别介绍增删改查操作的代码示例。

创建记录

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

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

上述代码中,我们通过 create 方法创建了一条新纪录,并将属性和属性值传入其中。需要特别注意的是,我们使用了 then 和 catch 方法处理异步请求的结果,其中 then 用于处理成功请求的结果,catch 用于处理失败请求的结果。

查询记录

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

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

上述代码中,我们使用 findAll 方法查询 author 为 “张三” 的图书记录。findAll 方法返回一个数组,包含所有满足条件的记录。在返回的结果中,我们使用了 for...of 语法,而非 forEach 方法,主要是为了更符合 ES6 的语法规范,并方便理解。

更新记录

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

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

上述代码中,我们使用 update 方法更新所有 author 为 “张三”的图书记录的 title 字段为 “JavaScript 实战”。update 方法返回更新的记录数,我们使用 updatedCount[0] 输出更新的记录数。

删除记录

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

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

上述代码中,我们使用 destroy 方法删除所有 author 为 “张三”的图书记录。destroy 方法返回被删除的记录数。

总结

本文从安装 Sequelize 开始,一步一步讲解了使用 Sequelize 在 Node.js 中进行 ORM 操作,并给出了相应的示例代码。希望本文能为初学者提供一些帮助,让大家更加深入理解 Sequelize。如有疑问或不足之处,欢迎留言指出。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65332cb17d4982a6eb69e231


猜你喜欢

  • Material Design 对于 Recyclerview 的滑动有时候不流畅,怎么办?

    1. 前言 Android中的Recyclerview是一个强大的组件,可以在列表中快速显示大量数据。然而,在使用Material Design样式的时候,有用户抱怨Recyclerview滑动不流畅...

    1 年前
  • 使用 Chai 和 Supertest 进行 API 测试时遇到的错误堆栈不清晰解决方法

    在前端开发中,进行 API 测试是非常重要的一环。Chai 和 Supertest 是两个流行的 Node.js 测试工具,它们可以帮助开发者进行 API 接口测试,并且提供了丰富的断言和测试组件。

    1 年前
  • CSS Reset 应用后出现按钮样式失效的解决方案

    引言 在前端开发中,CSS Reset 是一个非常重要的概念,它可以帮助我们规范化不同浏览器的默认样式,并提供了一种统一的方式来定义样式。但是,在应用 CSS Reset 后,有时候我们会发现一些按钮...

    1 年前
  • Mongoose 之 populate 中的限制和优化方法总结

    Mongoose 是一个优秀的 Node.js ORM 库,它提供了一系列的功能,使得开发者可以更加方便地操作 MongoDB 数据库。其中,通过 populate 可以实现 MongoDB 中的联表...

    1 年前
  • ES12 之 String.prototype.matchAll

    一、简介 在 ECMAScript 2021 (ES12) 中,新增了一个方法 String.prototype.matchAll ,它可以方便地在字符串中匹配所有的正则表达式。

    1 年前
  • 如何在 Promise 执行过程中取消未完成的任务?

    Promise 是一种用于异步编程的 JavaScript 库。它提供了一种简单而强大的方法来处理异步操作,以及确保异步操作的可组合性和错误处理能力。然而,有时候我们需要取消 Promise 中未完成...

    1 年前
  • 如何使用 Fastify 处理 Json Web Tokens(JWT)并进行身份验证

    JSON Web Tokens(JWT)是一种用于身份验证和授权的开放标准,它可以在不同的应用程序和服务之间安全地传递声明。在前端开发中,常常需要使用 JWT 来实现用户身份验证。

    1 年前
  • Docker + Jenkins + Kubernetes 的持续集成流水线

    前言 随着互联网的快速发展,软件行业的竞争日趋激烈。如何快速、高效地交付高质量的软件成为了每个企业所追求的目标。而持续集成(CI)则成为了实现这一目标的重要手段。

    1 年前
  • 在 ES9 中如何使用对象 rest 和 spread

    在 ES9 中如何使用对象 rest 和 spread 在 ES9 中,我们可以通过对象 rest 和 spread 的方法来简化我们在前端开发中的代码量,并且也能提高我们的开发效率。

    1 年前
  • 如何使用 ECMAScript 2016 中的 Array 方法解决数组去重问题

    前言 在前端开发过程中,常常需要对数组进行去重操作。传统的去重方式会消耗大量的时间和计算资源,因此有必要学习和使用一些更加高效和便捷的数组去重方法。本篇文章介绍了如何利用 ECMAScript 201...

    1 年前
  • Sequelize 如何解决日期格式问题

    在使用Sequelize进行前后端开发时,我们经常会遇到日期格式问题。Sequelize提供了许多方法来解决这些问题,本文将详细介绍Sequelize如何解决日期格式问题。

    1 年前
  • 了解 Babel-polyfill,让你的代码兼容低版本浏览器

    了解 Babel-polyfill,让你的代码兼容低版本浏览器 随着 Web 技术的发展,前端开发已经成为了一个越来越重要的领域,而本文主要讲述的 Babel-polyfill 是一个非常实用的工具,...

    1 年前
  • redux-saga 实践:掌握基础的异步流程控制

    在前端开发中,异步操作是非常常见的,比如与服务器的数据交互、定时器操作、路由跳转等,而 Redux-saga 是一个比较流行的异步流程控制库,它可以大大简化异步操作的流程,降低代码的复杂度,提高代码的...

    1 年前
  • ES8 关键字 await 和 async 的使用教程

    随着前端技术的不断发展,JavaScript也在不断更新和完善自己,ES8版本中加入了新的异步编程方式,即await和async关键字,用于解决JavaScript异步编程中的痛点问题。

    1 年前
  • 使用 Express.js 和 Handlebars 构建动态网页的完整教程

    在前端开发中,构建动态网页是必不可少的一项技能。而使用 Express.js 和 Handlebars 可以轻松地构建出具有页面渲染和数据处理能力的动态网页。在本文中,我们将详细介绍如何使用 Expr...

    1 年前
  • ES2020 中异步函数中的 try-catch 及使用技巧

    在ES2020标准中,异步函数(Async Function)成为了JavaScript中的一个独立的功能模块,它能够更加方便地处理异步操作。与传统的Promise相比,异步函数具有更加直观的语法结构...

    1 年前
  • Mocha 测试框架中的 Before,After 和 BeforeEach,AfterEach

    在现代 web 应用程序中,前端的开发变得越来越复杂,所以测试框架是一个重要的部分,可以帮助前端工程师简化测试流程和提高测试的可靠性。Mocha 是 JavaScript 的一个测试框架,可以在浏览器...

    1 年前
  • MongoDB 全面备份策略及数据恢复方案

    作为一名前端开发人员,对于 MongoDB 数据库备份方案的了解是非常必要的。在实际项目中,我们需要定期备份数据库并准备好应对意外情况的恢复计划。本文将介绍 MongoDB 全面备份策略及数据恢复方案...

    1 年前
  • Redis 缓存预热方案:如何使用 zset 实现缓存预热功能

    前言 Redis 是一款非常流行的内存数据库,也是许多公司的首选缓存方案。在使用 Redis 缓存时,一个常见的问题是缓存冷启动。当 Redis 中没有缓存数据时,访问量过大或者请求复杂度高的情况下,...

    1 年前
  • 利用 Custom Elements 实现自定义 HTML 标签

    前言 在 Web 开发中,我们经常需要使用许多标准 HTML 元素来构建我们的页面。然而,有时这些标准元素并不能完全满足我们的需求,此时我们需要自定义一些 HTML 元素来达到我们想要的效果。

    1 年前

相关推荐

    暂无文章