Sequelize 数据库关联 (Associations):belongsTo、hasOne、hasMany、belongsToMany 教学

阅读时长 6 分钟读完

Sequelize 是一个支持多种数据库的 ORM 库,它提供了方便的功能,使得开发者可以更加便捷地使用 SQL 数据库。其中,Sequelize 的关联 (Associations) 功能,是用来帮助开发者处理 SQL 数据库中表之间的关系的。

在本文中,我们将介绍 Sequelize 的 4 种关联方式:belongsTo、hasOne、hasMany、belongsToMany,包括它们的作用、使用方法以及示例代码。希望能够帮助读者进一步了解 Sequelize。

1. belongsTo

belongsTo 是一种 一对一 的关联方式,用于建立两个表之间的关系。在关系中,有一个表是父表,有一个表是子表。例如,我们有一个 Blog 表和一个 Author 表,每个 Author 只属于一个 Blog。这时,我们可以使用 belongsTo 在 Author 表中建立一个 blog_id 字段,来关联 Blog 表中的 id 字段。

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

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

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

上面的代码中,我们使用了 belongsTo 方法将 Author 表和 Blog 表进行了关联。此时,Author 表会增加一个 blog_id 字段。

2. hasOne

hasOne 也是一种 一对一 的关联方式,但是需要建立逆向的关联。即,如果我们用 Blog 表来举例,每个 Blog 只有一个 Author,但是每个 Author 可以有多个 Blog。此时,我们就需要使用 hasOne,将 Blog 表和 Author 表建立关联,并在 Author 表中增加 blog_id 字段。

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

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

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

上面的代码中,我们使用了 hasOne 方法将 Blog 表和 Author 表进行了关联。此时,Author 表会增加一个 blog_id 字段。

3. hasMany

hasMany 是一种 一对多 的关联方式,用于建立两个表之间的关系。同样以 Blog 表为例,每个 Blog 可以有多个 Comment,但是每个 Comment 只属于一个 Blog。此时我们就需要使用 hasMany,在 Comment 表中建立一个 blog_id 字段,来关联 Blog 表中的 id 字段。

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

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

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

上面的代码中,我们使用了 hasMany 方法将 Blog 表和 Comment 表进行了关联。此时,Comment 表会增加一个 blog_id 字段。

4. belongsToMany

belongsToMany 是一种 多对多 的关联方式,用于建立两个表之间的关系。例如,我们有一个 User 表和一个 Project 表,一个 User 可以参与多个 Project,一个 Project 也可以由多个 User 参与。此时,我们就要使用 belongsToMany,同时在 User 表和 Project 表中增加中间表(JoinTable)。

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

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

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

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

上面的代码中,我们使用了 belongsToMany 方法将 User 表和 Project 表进行了关联。此时,User 表和 Project 表都会增加一个中间表,用于维护关联关系。

总结

在本文中,我们介绍了 Sequelize 中的 4 种关联方式:belongsTo、hasOne、hasMany、belongsToMany,以及它们的作用、使用方法以及示例代码。希望可以帮助开发者更好地使用 Sequelize,并且加深对 SQL 数据库表之间关系的理解。

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

纠错
反馈