4레벨 리뷰
1. 과제 요구 사항
1) ERD 작성
2) 댓글 추가
3) 좋아요 기능 추가
2. 구상
- 3레벨과 동일하게 댓글부분 mongoose -> sequelize로교체
- 좋아요 테이블 추가, 좋아요 라우터 추가
- 게시글 테이블에 좋아요 추가
- 유저가 좋아요를 누를 시 좋아요 테이블에 값추가, 취소시 값 삭제
- 좋아요 on/off 시 게시글 테이블의 좋아요 수 변경
3. 구현
1) ERD
2) Directory Structure
3) 댓글 기능 추가
- 3레벨에 작성했던 댓글 기능 재활용, 문법만 교체
4) 좋아요 기능 추가
- like 라우터, 모델, 테이블 추가, post테이블에 likes 추가
- like테이블에 userid와 postid 저장 및 참조
- 좋아요 on off는 테이블값에 데이터 생성/삭제(user가 누른 post -> userid,postid)
- 좋아요 on시 해당 post의 likes 1증가, off시 1감소
4. 리뷰
1) 4lv
- MySQL과 Sequelize를 다시 한번 진행하며 숙련됨
- ERD 제작을 통해 견고한 설계가 가능했고, 테이블/컬럼의 설계 실수가 줄어들었다
- SQL 데이터들의 외부키값, 테이블들 간의 레퍼런스/조인 등에 익숙해졌다
2) 매니저님 피드백
- 좋아요 on/off시 데이터 생성/삭제 보다 true,false 로 진행하는걸 추천
- 트랜잭션 사용을 통하여 좋아요 기능 안정성 추가
3) 고찰
- 처음엔 Likes테이블의 postId 컬럼의 데이터를 조회 및 합산하여 좋아요 수(likes)를 표현하려고 하였으나, 데이터가 많아질 경우 연산이 길어질 것으로 예상되어 좋아요/좋아요취소 시에 바로바로 Posts테이블에 반영되도록 로직을 변경
- 연산 속도는 개선하였으나 특정 오류(좋아요가 있는상태인데 중복으로 좋아요가 눌린다던지)로 인하여 Posts테이블의 좋아요수가 실제와는 다르게 표시될 위험이 있을거로 예상됨 -> 트랜잭션으로 안정성 추가 예정
- 시험문제 destroy메소드에서 where 조건에서 postid로만 삭제를 했으나 안정성을 위해 userid도 추가해 주는거이 좋음
'항해14기 본과정 > 항해14기 개발일지' 카테고리의 다른 글
[항해 14기] 개발일지24 (Layered Architecture Pattern) (0) | 2023.04.29 |
---|---|
[항해 14기] 개발일지23 (Prettier, Socket, Domain) (0) | 2023.04.29 |
[항해 14기] 개발일지21 (Node.js 3lv 과제) (0) | 2023.04.26 |
[항해 14기] 개발일지20 (Sequelize, Migration) (0) | 2023.04.25 |
[항해 14기] 개발일지19 (SQL, Sequelize) (0) | 2023.04.24 |