비디오 플레이 버튼을 누를 때마다 VIEW (조회수) 상승시키기
routes.js
// api
const API = "/api";
const REGISTER_VIEW = "/:id/view";
...
const routes = {
...,
api: API,
registerView: REGISTER_VIEW
}
apiRouter.js
import express from "express";
import routes from "../routes";
import { postRegisterView } from "../controllers/videoController";
const apiRouter = express.Router();
apiRouter.post(routes.registerView, postRegisterView)
export default apiRouter;
videoController.js
export const postRegisterView = async (req,res) => {
const {
params : { id }
} = req;
try {
// 성공시 비디오 (id값으로 찾아서) view 숫자 증가
const video = await Video.findById(id);
video.views += 1;
video.save();
res.status(200);
} catch (error) {
res.status(400);
} finally {
// 성공이든 실패든 응답 종료시킴
res.end();
}
}
ex) http://localhost:4000/videos/{video id}/view
videoPlayer.js
const registerView = () => {
const videoId = window.location.href.split("/videos/")[1];
fetch(`/api/${videoId}/view`, {
method: "POST"
});
};
function handlePlayClick(){
registerView();
...
}