JavaScript 中使用 Sequelize 完成 User 表和 Article 表的关联操作

阅读时长 9 分钟读完

介绍

Sequelize 是一个基于 Node.js 的 ORM(对象关系映射)框架,用于在 Node.js 中操作数据库。它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 等。在本文中,我们将使用 Sequelize 来完成 User 表和 Article 表的关联操作。

创建 User 表和 Article 表

我们先创建 User 表和 Article 表,以便后续操作。假设我们使用 MySQL 数据库。

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

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

User 表和 Article 表之间采用一对多的关系,一个 User 对应多个 Article。具体来说,Article 表的 user_id 列是外键,它指向 User 表的 id 列。

安装 Sequelize

安装 Sequelize 很简单,只需要使用 npm 命令即可:

另外,还需要安装相关的数据库驱动程序。以 MySQL 为例,安装 mysql2 驱动程序:

配置 Sequelize

要使用 Sequelize,我们还需要配置它的连接信息。我们可以把连接信息保存在 config.json 文件中:

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

创建 Sequelize 实例

在代码中,我们需要使用 Sequelize 实例来操作数据库。我们先创建 Sequelize 实例:

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

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

定义 User 模型和 Article 模型

接下来,我们需要定义 User 模型和 Article 模型。我们使用 sequelize.define() 方法来定义模型。

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

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

在上面的代码中,我们使用 sequelize.define() 方法来定义 User 模型和 Article 模型。定义时需要指定模型名称和列定义。列定义是一个对象,键名是列名,值是列类型。

定义关联关系

定义好模型后,我们需要定义它们之间的关联关系。在本例中,我们使用 belongsTo() 和 hasMany() 方法来定义关系。belongsToMany() 和 hasOne() 方法也可以用来定义关系。

在上面的代码中,我们使用 hasMany() 方法来定义 User 和 Article 之间的关系。它表示一个 User 对象可以拥有多个 Article 对象。as 属性用于指定关联模型名称,默认为模型名称的复数形式。foreignKey 属性用于指定关联模型的外键。

我们还使用 belongsTo() 方法来定义 Article 和 User 之间的关系。它表示一篇 Article 对象属于一个 User 对象。as 和 foreignKey 属性同上。

查询数据

定义好模型和关系后,我们可以使用 Sequelize 查询数据了。下面是一些常用的查询方法:

查询 User 对象

查询 Article 对象

在上面的代码中,我们使用 Sequelize 各种查询方法。findAll() 方法可以查询所有符合条件的对象,findByPk() 方法可以根据主键查询对象,findOne() 方法可以查询第一个符合条件的对象。include 属性可以指定关联模型。

另外,我们还使用了 getArticles() 方法,它是 Sequelize 自动生成的方法,用于查询关联模型的对象。

修改数据

修改数据也非常简单,只需要修改对象属性后调用 save() 方法即可。

在上面的代码中,我们修改了 User 对象和 Article 对象的属性,并调用 save() 方法保存。

示例代码

完整的使用 Sequelize 完成 User 表和 Article 表的关联操作的示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

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

总结

本文介绍了如何使用 Sequelize 完成 User 表和 Article 表的关联操作。我们首先创建了 User 表和 Article 表,然后使用 Sequelize 定义了 User 模型和 Article 模型,并定义了它们之间的关联关系。最后,介绍了如何使用 Sequelize 查询和修改数据。使用 Sequelize,我们可以很方便地操作数据库,加快开发效率。

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

纠错
反馈