切換語言為:簡體

使用Egg.js實現影片評論功能:從零到完成

  • 爱糖宝
  • 2024-06-10
  • 2078
  • 0
  • 0

使用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實現影片評論功能:從零到完成

總結

在本篇文章中,我們詳細介紹瞭如何使用Egg.js實現影片評論功能,包括定義路由、編寫控制器邏輯以及透過Postman進行驗證。透過這些步驟,你可以輕鬆地在你的專案中實現類似的功能。

總而言之,Egg.js提供了一個簡潔而強大的框架,使得構建複雜的web應用變得更加容易和高效。希望這篇文章對你有所幫助!

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.