Sequelize 学习笔记:模型的定义和查询语句

在现代 Web 应用中,使用 ORM(Object-Relational Mapping) 工具来管理数据库是很常见的。Sequelize 是一个 Node.js ORM 工具,提供了操作多种数据库(如 PostgreSQL、MySQL、SQLite 和 Microsoft SQL Server)的接口。

本文将介绍如何使用 Sequelize 来定义数据模型和执行查询。

数据模型的定义

安装

首先,需要安装 Sequelize:

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

同时,需要根据使用的数据库引擎安装相应的驱动,例如 PostgreSQL 需要安装pg

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

连接数据库

创建 Sequelize 实例时,需要传入数据库连接信息:

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

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

定义模型

定义一个 Sequelize 模型时,唯一必须的参数是需要表示的表名。其他参数是表结构的定义,包括列名、数据类型、默认值等。

以下是一个简单的例子:

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

这段代码将创建一个名为 user 的模型。模型只有三个列:firstNamelastNameage

可选参数 allowNull 指定列是否允许为 null。数据类型定义在 Sequelize 对象中,包括 STRINGINTEGERFLOATBOOLEAN 等等。

模型同步

定义完模型后,需要在数据库中创建相应的表。Sequelize 提供了 sequelize.sync() 方法来同步模型和数据库结构:

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

-- ---

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

sequelize.sync() 返回一个 Promise,在同步完成后调用。该方法将在数据库中创建匹配模型定义的表,如果表已经存在,将更新表结构(增加/删除列等)。

例子

以下是一个完整的例子。模型定义了一个名为 Article 的表,该表具有 id、title、body 和 createdAt 列:

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

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

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

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

查询

Sequelize 提供了非常灵活的查询接口。本节将介绍如何使用 Sequelize 查询数据库。

创建一个实例

要对数据库进行查询,需要首先创建一个 Sequelize 实例:

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

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

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

查询全部记录

使用 findAll() 方法可以查询数据库中的全部记录。以下代码查询数据库中的全部文章:

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

findAll() 方法返回一个 Promise,当查询完成后调用。查询结果是一个数组,包含查询到的所有记录。

条件查询

使用 findAll() 方法的 where 参数可以指定条件查询。以下代码查询标题为 "Sequelize 学习笔记" 的文章:

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

where 参数是一个包含查询条件的对象。上面的代码只返回符合指定条件的记录。

还可以使用运算符来指定查询条件:

  • $eq:等于
  • $ne:不等于
  • $gt:大于
  • $gte:大于等于
  • $lt:小于
  • $lte:小于等于
  • $like:模糊匹配
  • $notLike:不匹配

例如,以下代码查询标题以 "Sequelize" 开头的文章:

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

增加记录

使用 create() 方法可以在数据库中生成新的记录。以下代码创建一篇新的文章:

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

create() 方法返回一个 Promise,当添加记录的操作完成后调用。回调函数返回新记录的详细信息。

更新记录

使用 update() 方法可以更新数据库中的一个或多个记录。以下代码将标题为 "My New Sequelize Article" 的文章的标题更新为 "My Renamed Sequelize Article":

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

update() 方法返回一个 Promise。回调函数将包含一个数组,给出数据库表中删除的项目数量。

需要注意的是,在更新数据时,必须传递一个包含更新内容的对象。更新条件是 where 参数中的对象。

删除记录

使用 destroy() 方法可以从数据库中删除一个或多个记录。以下代码将标题为 "My Renamed Sequelize Article" 的文章删除:

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

destroy() 方法返回一个 Promise。回调函数将包含一个数字,指示删除的记录数。

总结

Sequelize 是一个方便管理关系型数据库的工具。本文中,我们介绍了如何使用 Sequelize 来定义模型和查询数据。使用 Sequelize 可以更轻松地操作数据库,希望本文对您有所帮助。

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


猜你喜欢

  • 利用 Babel 实现 Javascript 的 AST 语法树解析

    前言 在前端开发中,我们经常需要对 Javascript 代码进行解析和转换。这些转换可以是语法转换,比如将 ES6 代码转换成 ES5 代码,也可以是代码优化,比如去除无用代码或者压缩代码。

    1 年前
  • 如何使用 chai.js 和 mocha.js 进行 api testing

    在前端开发中,我们经常需要测试我们的 API 是否能够正常工作。为了确保 API 的质量,我们需要使用一些测试工具来进行 API 测试。chai.js 和 mocha.js 是两个流行的 JavaSc...

    1 年前
  • 利用数组方法解决 ECMAScript 2020 (ES11) 中的堆栈操作的问题

    在 ECMAScript 2020 (ES11) 中,我们可以使用数组方法来解决堆栈操作的问题。堆栈是一种后进先出 (LIFO) 的数据结构,我们可以使用 push 和 pop 方法来实现堆栈操作。

    1 年前
  • Less 学习笔记(三):使用嵌套和继承来更智能地编写 CSS

    在前端开发中,CSS 是一个不可或缺的部分。然而,CSS 的语法不够直观,写起来也比较繁琐。为了让 CSS 更加易读易写,我们可以使用 Less 这个预处理器来编写 CSS。

    1 年前
  • 如何解决在使用 Custom Elements 时遇到的 slot 内容跨越组件边界的问题?

    在前端开发中,我们经常会使用 Custom Elements 来创建自定义组件。而在使用 Custom Elements 的过程中,我们有时会遇到一个问题:slot 内容跨越了组件边界,导致组件无法正...

    1 年前
  • 如何引用 Tailwind CSS 的自定义类实现自定义样式?

    Tailwind CSS 是一款流行的 CSS 框架,它提供了丰富的 CSS 类,可以帮助我们快速地实现样式。但有时候我们需要自定义一些样式,这时候就需要使用 Tailwind CSS 的自定义类了。

    1 年前
  • SASS 中如何迭代多个值并输出为多个样式

    在前端开发中,SASS 是一个非常流行的 CSS 预处理器。它可以帮助我们更方便地编写 CSS,并且提供了许多有用的功能,其中一个就是迭代。 迭代是指在 SASS 中循环遍历一个列表或一个范围,并将每...

    1 年前
  • Cypress 测试框架中如何处理鼠标事件

    Cypress 是一个现代化的前端测试框架,它可以让开发者更加方便地进行端到端的测试。在测试过程中,鼠标事件是经常需要被模拟的一种用户行为。本文将介绍 Cypress 测试框架中如何处理鼠标事件,并提...

    1 年前
  • Node.js 中实现 WebSocket 心跳检测的技巧

    WebSocket 是一种基于 TCP 协议的全双工通信协议,它可以在浏览器和服务器之间建立持久性的连接,实现实时的双向数据传输。在实际应用中,为了保证 WebSocket 连接的稳定性和可靠性,需要...

    1 年前
  • Express.js 中集成 Swagger 的完整指南

    Swagger 是一种 API 规范和工具集,用于设计、构建、文档化和测试 RESTful API。它可以帮助开发者快速创建和维护 API 文档,并提供一个交互式的 API 测试界面。

    1 年前
  • AngularJS SPA 应用中状态管理的实现方式探究

    在 AngularJS 单页应用(SPA)的开发中,状态管理是一项至关重要的任务。因为单页应用的特性,所有的页面组件共享同一个状态,这就需要我们采用一种有效的方式来进行状态管理。

    1 年前
  • MongoDB 中的数据去重技术介绍

    在前端开发中,经常会遇到需要对数据进行去重的情况。而在 MongoDB 中,有多种方法可以实现数据去重。本文将介绍其中的几种方法,并提供示例代码,帮助读者更好地理解和应用这些技术。

    1 年前
  • 使用 Docker 搭建分布式系统的步骤和注意事项

    前言 随着互联网的发展,分布式系统的应用越来越广泛。分布式系统的好处是能够提高系统的可扩展性、可靠性和性能等。然而,搭建分布式系统是一项非常复杂的工作,需要考虑很多因素,比如网络通信、负载均衡、容错处...

    1 年前
  • 构建基于 RESTful API 的企业级数据分析平台

    随着数据的爆炸式增长,企业需要更加高效、智能的数据分析平台来支持业务决策。RESTful API 是一种基于 HTTP 协议的轻量级 Web API 设计风格,广泛应用于企业级数据分析平台中。

    1 年前
  • PM2 的多进程与负载均衡在 Node.JS 开发中的应用

    在 Node.JS 开发中,我们经常需要处理大量的并发请求。为了提高服务器的性能和稳定性,我们可以使用 PM2 来实现多进程和负载均衡。本文将介绍 PM2 的多进程和负载均衡的原理和应用,并提供示例代...

    1 年前
  • Koa 搭配 Node-Redis 实现缓存

    在前端开发中,响应速度是非常重要的。为了提高响应速度,我们可以使用缓存来减少对数据库的访问次数。在本文中,我们将介绍如何使用 Koa 和 Node-Redis 来实现缓存,以达到秒杀级别的响应速度。

    1 年前
  • 解决在 Deno 中使用 Rest API 错误的指南

    Deno 是一个新兴的 JavaScript 和 TypeScript 运行时环境,它提供了一种安全、快速和稳定的方式来编写和运行 JavaScript 应用程序。

    1 年前
  • Hapi 框架中实现邮件发送功能的方法

    在 Web 应用程序中,邮件服务是一个必不可少的功能。Hapi 是一款流行的 Node.js Web 框架,它提供了简单易用的插件系统,使得在 Hapi 中实现邮件发送功能变得非常容易。

    1 年前
  • Sequelize 常见操作之更新数据

    Sequelize 是一个基于 Node.js 的 ORM(Object-Relational Mapping)框架,它可以让我们使用 JavaScript 语言来操作关系型数据库,例如 MySQL、...

    1 年前
  • 使用 Jest 进行测试时,如何 mock 一个 node 模块?

    在前端开发中,我们经常需要使用 node 模块来完成一些任务,比如读取文件、发送网络请求等等。而在编写测试代码时,我们可能需要 mock 这些 node 模块,以便更好地测试我们的代码。

    1 年前

相关推荐

    暂无文章