[항해99] 60일차

카테고리 없음|2021. 8. 6. 00:49

 

 

 

 

 

The silence is deafening. 

 

 

 

 

 

 

 

그냥 멋진말 쓰고싶었는데 생각안나서 대충 멋잇어보이는말 영어로 쓰기.

 

 

 

 

Server CPU 과부화 :

 

ec2 CPU  과부화가자꾸걸린다. 갑자기 거의 100프로까지 올라갔다가 서버가 터져버린다.

원인도 모른데 자꾸터지는데 프론트분들 죄송합니다

일단 검색해보니깐 원인은 , 무한루프혹은 알수없는 문제로인해 db 쪽에 문제가있는것같은데, 일단 하영님이

찾으신 해결방법은 new Prisma Clinet를 model마다하지않고 general variable로 빼서 한번만 하는것이 

올바른 방법이라고 밑에 나와있음!!

 

 

https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types

 

Prisma schema API (Reference)

API reference documentation for the Prisma Schema Language (PSL).

www.prisma.io

 

혹은

mySQL. 에서 로그를 확인해볼수도있을것같다.

 

오늘은  글 조회수 를 만들어보았다.

일단 구글링부터해서 다른사람들은 어떻게 만들엇는지 구경을했다

 

여러가지방법이있는것같은데,

 

제일쉬운방법은 : 그냥 api call  할때마다  count를 넣어주는방식 :

                       -> 그냥 새로고침해도 뷰카운트가올라감

 

어려운방법은 : 미들웨어나 따로 로직으로 구현해서 현재 사용자를 저장해놓고 일정시간(10분) 동안은 뷰카운트가 안올라가게

                        만들수도있는것같다.

 

원래는처음에 여기서 그냥 다 복붙해볼려고햇는데

당연히안된다. 

일단 interface만드는것부터 막혀서 30분정도 씨름하다가 포기했다.

게다가 이방법이라면, 만약에 로그인하지않은 유저가본경우는 어떻게해야하는지 나중에 처리를해줘아햘것같아서 깔끔하게 포기.

if (post) {
    //       //조회수 증가 viewObj 오브젝트 만들어서 postId : [username] 형식으로 저장
    //       if (!viewObj[req.body.postId]) {
    //           viewObj[req.params.post_id] = []
    //       }
    //       if (viewObj[req.params.post_id].indexOf(req.user.username) == -1) {
    //           //username이 없다면 배열에 추가하고 조회수 증가
    //           viewObj[req.params.post_id].push(req.user.username)
    //           post.view++
    //           setTimeout(() => {
    //               //10분이 지나면 배열에서 삭제해서 다시 조회수가 증가할 수 있게 만듦
    //               viewObj[req.params.post_id].splice(
    //                   viewObj[req.params.post_id].indexOf(req.user.username),
    //                   1
    //               )
    //           }, 600000)
    //           for (let i in viewObj) {
    //               //username이 하나도 없으면 해당 오브젝트 삭제
    //               if (i.length == 0) {
    //                   delete viewObj.i
    //               }
    //           }
    //       }

 

https://ip99202.github.io/posts/nodejs-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EC%A1%B0%ED%9A%8C%EC%88%98-%EA%B5%AC%ED%98%84/

 

nodejs 게시판 조회수 구현

문제점 게시글의 조회수를 증가시키는 코드를 작성했다 처음에는 단순히 백엔드쪽에서 게시글에 대한 데이터 요청을 받을 때마다 조회수를 1증가시켰다.

ip99202.github.io

 

그래서 다시 이것저것 찾다가 쉽게 설명해주는곳을찾앗는데, 이것도 맘엔들지않았다.

https://ipirozhenko.com/blog/counting-requests-in-nodejs-express-application/

 

Counting requests in your Node.js + Express application

What is the purpose of counting requests to your web application? Knowing the number of requests helps you answer next important business questions: Is anyone using my API? (if requests count is zero then it’s probably nobody)Is my API working? (if reque

ipirozhenko.com

그래서그냥 내가 쉬운방법으로구현을먼저해놨다.

일단 구현만해놓고 나중에 추가사항이있으면 그때 생각하는게 내정신건강에좋을것같다.

 

일단. prisma  schema 에서 post model 에 viewCount를 추가해줬다.

 

그리고 post model (MVC에서model;)에서 

불러오기를할때마다 increment로 쉽게 줄수있는것 프리즈마에서 제공을 해주는걸 이제찾았다.

const Post = prisma.post

  export( postId: number) =>{
  const targetPost = Post.update({
    where:{postId: postId},
    data:{
      viewCount:{
        increment:1,
      },
    }
  })
  return targetPost

이래서 공식문서를 잘읽어봐야하는걸까...

제대로 읽었으면 삽질안했을텐데 ^0^

Atomic number operation

https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#increment-all-view-and-likes-fields-of-all-post-records-by-1

 

Prisma Client API (Reference)

API reference documentation for Prisma Client.

www.prisma.io

 

다들 프리즈마 쓰세요 두번쓰세요 세번쓰세요 네번...

반응형

댓글()