likes
comments
collection
share

Egg.js 实战:实现关注频道功能

作者站长头像
站长
· 阅读数 61

在本篇文章中,我们将深入探讨如何在 Egg.js 中实现关注频道的功能。通过创建路由、完善控制器以及使用 Postman 进行接口验证,我们将一步步实现这一功能。

新建路由

首先,我们需要在 app/router.js 中定义新的路由:

module.exports = app => {
  const { router, controller } = app;
  const auth = app.middleware.auth
  router.prefix('/api/v1')
  router.get('/users/subscribe/:subscribeId', auth(), controller.user.subscribe)
};

这个路由定义了一个 GET 请求,用于用户关注某个频道,并使用 auth 中间件进行认证。

实现控制器

接下来,我们在控制器中实现关注频道的逻辑:

const Controller = require('egg').Controller
class UserController extends Controller {
  // 关注频道
  async subscribe() {
    const subscribeId = this.ctx.params.subscribeId
    const userId = this.ctx.user._id
    if (subscribeId === userId) {
      this.ctx.throw(403, '不能关注自己')
    }
    const { Subscribe, User } = this.app.model
    let subInfo = await Subscribe.findOne({
      user: userId,
      channel: subscribeId
    })
    if (subInfo) {
      this.ctx.throw(401, '已经关注')
    }
    let sub = new Subscribe({
      user: userId,
      channel: subscribeId
    })
    let subDb = await sub.save()
    if (subDb) {
      let subscribeUser = await User.findById(subscribeId)
      subscribeUser.subscribeCount++
      await subscribeUser.save()
      this.ctx.body = subscribeUser
    } else {
      this.ctx.throw(401, '关注失败')
    }
  }
}

module.exports = UserController

在这个控制器方法中,我们首先检查用户是否试图关注自己,如果是则抛出错误。然后,我们查询是否已经关注过该频道,如果已关注则抛出错误。接下来,我们创建新的订阅记录,并更新被关注用户的订阅计数。

使用 Postman 验证

最后,我们使用 Postman 对这个接口进行测试,确保其功能正常。测试步骤如下:

  1. 启动服务并打开 Postman。
  2. 发送 GET 请求到 http://localhost:7001/api/v1/users/subscribe/{subscribeId}
  3. 检查返回的数据,验证用户关注功能是否正确。

Egg.js 实战:实现关注频道功能

总结

本文详细讲解了如何在 Egg.js 中实现关注频道的功能。通过定义路由、完善控制器逻辑,以及使用 Postman 进行接口验证,我们完整地实现了用户关注频道的功能。通过这种方式,开发者可以更好地理解和掌握 Egg.js 的应用开发技巧。

转载自:https://juejin.cn/post/7377578894591901706
评论
请登录