우리의 경우 게시판이 두 종류가 있고, 각각 조회수 기능을 추가하려고 했다.
하지만 그저 클릭할때마다 무한히 올라가는 조회수는 오히려 의미없다고 판단되어, 조회수 중복방지에 대한 구현에 대해 알아보았고, cookie-parser를 이용해 한 유저가 조회수를 여러번 올리는 것을 일정 시간동안 방지할 수 있었다.
사용하는 라이브러리는 다음과 같다.
npm install cookie-parser
npm install request-ip
app.js에 설정해주는 것은 다음과 같다.
const cookieParser = require("cookie-parser");
app.use(cookieParser());
게시글을 불러오는 라우터에는 다음과 같이 설정해주었다.
//게시글이 없을 경우에 대한 예외처리를 전부 한 뒤
if (req.cookies["f" + post_id] == undefined) {
res.cookie("f" + post_id, getUserIP(req), {
maxAge: 1200000,
});
await result.update({ view_count: result.view_count + 1 });
}
res.status(200).send({
result,
ok: true,
});
우리는 위에 말했듯이, 게시판의 종류가 두 종류(free, univ)라서, 각각의 post_id에 해당하는 u, f를 붙였다. 만약 해당하는 value의 쿠키가 존재하지 않으면 유저에게 쿠키를 발급해주고 조회수를 1 업데이트시켜주게 된다.
insomnia로 테스트 한 결과는 다음과 같았다.
free board 1번 게시물에 대한 조회 쿠키는 f1로 발급이 된다. user가 해당하는 부분을 조작하기 어렵도록 encoding을 할 지 고민중이다. :)
예지님은 빛입니다! 빛예지님!