Sequelize 实践:实现用户关注功能

阅读时长 8 分钟读完

在Web开发中,有很多常见的功能,例如用户关注。这项功能常常用在社交网站和博客网站上,让用户可以关注其他用户或关注自己感兴趣的话题。在本文中,我们将使用 Sequelize ORM 来实现用户关注功能。

什么是 Sequelize?

Sequelize 是一个 Node.js 的 ORM 库,它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL 等。ORM (Object-Relational Mapping)是一种面向对象的数据库操作方法,将关系数据库的表映射为类,将行映射为对象,从而实现对关系数据库的 CRUD 操作。

数据库设计

在实现用户关注功能之前,我们需要设计数据库表结构。在本文中,我们将使用 MySQL 数据库,并创建三个表:

  • User 表:存储用户信息,包括用户名和密码等。
  • Follow 表:存储用户关注关系,每个记录代表一条“用户A关注了用户B”的记录。
  • Post 表:存储文章信息,每篇文章都有一个作者。

下面是表结构设计:

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

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

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

模型定义

在 Sequelize 中,模型定义文件通常存放在 models 目录下。我们需要定义 User、Follow 和 Post 三个模型。

User 模型

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

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

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

Follow 模型

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

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

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

Post 模型

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

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

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

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

在 Post 模型中,我们将其与 User 模型进行关联,使用 belongsTo 方法。这可以帮助我们方便地查询文章的作者。

关注功能实现

现在,我们已经定义好了用户表和关注表。接下来,我们需要实现对应的功能——用户关注。

用户关注

假设用户A想关注用户B,他需要点击一个“关注”按钮。这时,我们需要在 Follow 表中创建一条记录,表示“用户A关注了用户B”。

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

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

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

POST /follow 接口中,我们接收到请求后,创建一个 Follow 模型的实例,并调用 create 方法,将数据保存到数据库中。请注意,我们在 Follow 表的 followerIdfollowedId 列上都建立了唯一索引,这是为了防止用户重复关注同一个人,或者重复取消关注。

用户取关

假设用户A不再想关注用户B,他需要点击一个“取消关注”按钮。这时,我们需要在 Follow 表中删除一条记录,表示“用户A取消关注了用户B”。

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

DELETE /follow 接口中,我们接收到请求后,使用 destroy 方法删除数据库中的记录。

查询关注列表

假设用户A想查看自己关注的用户,我们需要查询 Follow 表中所有被当前用户关注的记录,然后再从 User 表中查询出对应的用户信息。

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

GET /follow/:userId 接口中,我们使用 findAll 方法查询 Follow 表。使用 where 参数查询出被当前用户关注的记录,使用 include 参数关联 User 表,并设定其别名为 followedUser,最后,使用 map 方法将查询结果转换为一个包含关注用户信息的数组,并将其返回。

总结

在本文中,我们使用 Sequelize ORM 实现了用户关注功能。我们首先设计了数据库表结构,并定义了三个模型:User、Follow 和 Post。然后,我们实现了关注、取关和查询关注列表三个功能。通过本文的实践,读者可以更好地掌握 Sequelize ORM 的使用方法,同时也可以借此学习如何实现常见的 Web 开发功能。

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

纠错
反馈