Egg.js 实战:实现关注频道功能
在本篇文章中,我们将深入探讨如何在 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 对这个接口进行测试,确保其功能正常。测试步骤如下:
- 启动服务并打开 Postman。
- 发送 GET 请求到
http://localhost:7001/api/v1/users/subscribe/{subscribeId}
。 - 检查返回的数据,验证用户关注功能是否正确。
总结
本文详细讲解了如何在 Egg.js 中实现关注频道的功能。通过定义路由、完善控制器逻辑,以及使用 Postman 进行接口验证,我们完整地实现了用户关注频道的功能。通过这种方式,开发者可以更好地理解和掌握 Egg.js 的应用开发技巧。
转载自:https://juejin.cn/post/7377578894591901706