Sequelize ORM 之模型模块 (Model) 的使用实例

阅读时长 6 分钟读完

前言

Sequelize ORM 是一款使用 Node.js 进行数据库操作的框架,它使用了 Promise 进行异步操作,支持 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等多种数据库。在 Sequelize 中,我们可以使用模型 (Model) 来方便地操作数据库,这篇文章将带领读者深入理解 Sequelize 中的模型模块,并提供代码实例。

创建模型

在 Sequelize 中,我们需要先定义模型,然后将它们同步到数据库中。定义模型的过程十分简单,只需要创建一个 JavaScript 类,并继承自 Sequelize.Model 即可。我们先来看一个例子:

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

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

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

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

在上面的例子中,我们创建了一个名为 User 的模型,并定义了它的字段和数据类型。Sequelize 提供了多种数据类型,例如 STRING、INTEGER、BOOLEAN 等,可以根据实际需求选择。在定义完模型后,我们还要调用 sync() 方法将它同步到数据库中。这里传入 { force: true } 可以强制重新创建表,会删除已有的表并新建一个空表。

增删改查

在定义了模型后,我们就可以对数据进行增删改查了。Sequelize 提供多种操作方法,这里我们只介绍最常用的几种。

查询

Sequelize 中查询数据的方式有多种。我们可以使用 findAll() 方法查询所有数据:

如果要查询某些带条件的数据,可以使用 findAndCountAll() 方法:

上面的代码会查询年龄大于 18 岁的用户信息,并返回数量及数据。

插入

插入数据很简单,直接创建一个模型的实例然后调用 save() 方法即可:

更新

更新数据也很方便,首先我们要获取需要更新的数据,然后通过实例的属性修改并调用 save() 保存即可:

删除

删除数据则可以直接调用 destroy() 方法:

关联模型

Sequelize 中使用模型进行关联操作也很简单。举个例子,我们现在有两个模型 User 和 Message,一条 Message 只属于一个 User,但一个 User 可以有多条 Message,它们之间的关系是一对多。实现方法如下:

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

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

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

在上面的代码中,我们使用了 hasMany()belongsTo() 方法来定义关系。注意这里的 asforeignKey 均为可选参数,可以根据实际需求选择使用。

在获取某个用户时,它的消息也可以一起查询出来:

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

如果要获取某个消息对应的用户信息,则可以使用以下代码:

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

在上面的代码中,我们使用了 attributes 来选择需要返回的字段。

总结

本文深入地介绍了 Sequelize 框架中的模型模块,并提供了详细的操作示例。希望这篇文章可以帮助读者更好地理解 Sequelize 并应用到实际项目中。

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

纠错
反馈