Today I Lived/항해99

[TIL] 2021.08.13 [항해99 / 68일] sequelize.query

장 상 현 2021. 8. 13.

오늘은?

 

예외처리, 프런트분들의 요청사항 처리, 테스트, 예외처리, 테스트, 예외처리, 테스트

 

인기 게시글 refactoring

 

회고

 

너무 많이 떠먹여 준 장황한 쿼리문.

  const issue_post = await sequelize.query(
    "select free_board.post_id,\
    free_board.view_count\
    + count(distinct free_comment.user_id) * 10\
    + count(distinct free_like.user_id) * 20\
    as sum from free_board \
    left join free_comment\
    on free_board.post_id = free_comment.post_id\
    left join free_like\
    on free_board.post_id = free_like.post_id\
    WHERE free_board.createdAt BETWEEN DATE_ADD(NOW(),INTERVAL -1 DAY ) AND NOW()\
    group by free_board.post_id;",
    { type: Sequelize.QueryTypes.SELECT }
  );

 

게시판 조회 시 sequelize.fn의 attributes 속성으로 조인시킨 두 테이블 (댓글, 좋아요) 의

 

댓글 수, 좋아요 수 COUNT 기능 사용하여 계산하려 했으나

 

조인되는 모델에 대한 distinct 옵션을 sequelize에서 지원하지 않음.

 

→ join시 include 되는 model에 대한 distinct 옵션을 사용하기 위해

 

raw query 사용이 낫겠다 판단하여 쿼리문으로 전환.

 

 

다 떠멱여 준 쿼리문을 잽싸게 적용시켰더니 후회하신다.

 

더 힘든게 오려나보다.

 

어려울수록 기대된다. 더 어려운 걸 하고 싶다.

 

 

기능 구현이 마무리되어감과 동시에, 프런트분들의 수정 요청사항에 대한 작업이 많다.

 

뭔가를 논의해가며 만들어 나가는 재미가 정말 좋다.

 

현업에서는 싸움이 잦다는데 왜지...?

 

 

오늘의 명언

 

희망은 가능성에 대한 정열이다. - 키에르케고르

 

댓글