상세 컨텐츠

본문 제목

ch12. Views api << 템플릿 렌더링 X

노마드/유튜브

by hippo0207 2022. 9. 1. 13:45

본문

1. register view controller

  • 영상 조회수 
  • 템블릿 렌더링않하는 view >> api view 
  • router/apiRouter.js 
  • 뒤에 렌더링없이 status만 할꺼면 sendStatus() 로 써야함
[apiRouter.js]
import express from "express";
import { registerView } from "../controllers/videoController";

const apiRouter = express.Router();

apiRouter.post("/videos/:id([0-9a-f]{24})/view", registerView);
export default apiRouter;


========================
[videoController.js]
export const registerView = async (req, res) => {
  const {id} = req.params;
  const video = await Video.findById(id);
  if (!video) {
    return res.sendStatus(404);
  }
  video.meta.views = video.meta.views + 1;
  await video.save();
  return res.sendStatus(200);      <<      <<      <<
};
  • 이동없이 url호출  : interactive

2. register view event

  • 비디오 시청끝났을때 나타날 이벤트 추가
    • videoElement >> audioElement의 부모임
    • event << ended 사용가능
  • 프론트 js에서 video의 id를 알아야 함 

[watch.pug]
block content
    div#videoContainer(data-id = video._id)
    
====================================

[videoPlayer.js]
const handleEnded = () => {
  const { id } = videoContainer.dataset;
  fetch(`/api/videos/${id}/view`, {
    method: "POST",
  });
};

 

'노마드 > 유튜브' 카테고리의 다른 글

ch14. webassembly video transcode  (0) 2022.09.02
ch13. video recorder  (0) 2022.09.01
ch11.6~ video play (2)  (0) 2022.08.31
ch10. styles  (0) 2022.08.30
ch11. video player  (0) 2022.08.30

관련글 더보기

댓글 영역