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

阅读时长 8 分钟读完

在现代 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

纠错
反馈