使用Egg.js實現影片評論功能:從零到完成
引言
在本篇文章中,我們將介紹如何使用Egg.js實現一個影片評論功能。我們將從建立路由開始,一步步實現相關的控制器邏輯,並透過Postman進行驗證。無論你是Egg.js的新手還是有經驗的開發者,這篇文章都將幫助你更好地理解如何在實際專案中使用Egg.js。
新建路由
首先,我們需要在Egg.js中定義一個新的路由,以處理新增影片評論的請求。
module.exports = app => { const { router, controller } = app; const auth = app.middleware.auth router.post('/video/comment/:videoId', auth, controller.video.createComment) }
在上述程式碼中,我們定義了一個POST請求的路由/video/comment/:videoId
,並繫結到video
控制器的createComment
方法。我們還新增了auth
中介軟體,以確保只有經過身份驗證的使用者才能新增評論。
編寫控制器
接下來,我們在controller/video.js
檔案中編寫處理評論邏輯的控制器方法。
const Controller = require('egg').Controller class VideoController extends Controller { async createComment() { const body = this.ctx.request.body const videoId = this.ctx.params.videoId // 驗證請求體 this.ctx.validate({ content: { type: 'string' } }, body) const { Video, VideoComment } = this.app.model const video = await Video.findById(videoId) if (!video) { this.ctx.throw(404, '影片不存在') } const comment = await new VideoComment({ content: body.content, user: this.ctx.user._id, video: videoId }).save() if (comment) { video.commentCount = await VideoComment.countDocuments({ video: videoId }) await video.save() this.ctx.body = { msg: "評論成功" } } else { this.ctx.throw(501, '影片評論失敗') } } } module.exports = VideoController
在這段程式碼中,我們首先獲取請求體和影片ID,然後驗證請求體中是否包含content
欄位。接著,我們檢查影片是否存在,如果不存在則返回404錯誤。最後,我們建立新的評論並更新影片的評論數。
Postman驗證
透過Postman,我們可以向/video/comment/:videoId
路由傳送POST請求,驗證評論功能是否正常工作。
總結
在本篇文章中,我們詳細介紹瞭如何使用Egg.js實現影片評論功能,包括定義路由、編寫控制器邏輯以及透過Postman進行驗證。透過這些步驟,你可以輕鬆地在你的專案中實現類似的功能。
總而言之,Egg.js提供了一個簡潔而強大的框架,使得構建複雜的web應用變得更加容易和高效。希望這篇文章對你有所幫助!