Just Do IT!

[DoDream 프로젝트] 5주차 회고 본문

프로젝트/DoDream 프로젝트

[DoDream 프로젝트] 5주차 회고

MOON달 2024. 11. 3. 22:16
728x90
반응형

저번주에 백엔드 기능을 거의 구현했다고 했는데,

프론트랑 연동하면서 수정할 부분을 발견해서 중간중간 수정하는 부분이 많았다.

확실히 백엔드와 프론트를 다함께 진행하는 프로젝트 자체가 어렵다는 걸 알게 되는...그런 주간이었다.

 

 

 

 

 

 

1. 백엔드 버그 수정

팀원 분이 알려주신 버그인데, 확실히 db와 연관된 걸 조금 더 배워야 하고 공부할 게 많다는 걸 느낀 날이었다.

우리 프로젝트에서 연관된 DB가 많은데, 만약에 상위 DB의 data를 삭제하면 하위 DB의 data들도 모두 삭제되어야 했다.

 

내가 맡은 부분으로 예를 들어보자면,

문제집 삭제 → 문제집 댓글 삭제 → 댓글 좋아요 삭제

                    → 북마크 삭제

                    → 문제집의 문제 삭제 → 스터디에 추가한 인증글 삭제

이런 식으로 전부 연관되어 있었다.

 

그런데 각자 삭제 기능은 다 구현되었는데, 하나 삭제시 다른 것들도 모두 삭제되지 않는 버그가 있었다.

 

내가 처음 해결한 건 아니고 팀원분 코드를 참고해서 수정하였지만 한 번 짚고 넘어가면,

혼자 공부할 때나 프로젝트를 다시 진행할 때 주의하게 될 것 같아서 블로그에 정리해두었다.

짧은 시간 내에 공부를 하고 프로젝트를 진행하다보니 정말 부족한게 많다는 게 느껴진다.

 

내가 적은 블로그글

https://daydream-sy.tistory.com/358

 

JPA Cascade 알아보기

Cascade란? 부모 엔티티가 영속화될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태

daydream-sy.tistory.com

https://daydream-sy.tistory.com/359

 

JPA 특정 엔티티 삭제 시 연관 관계 엔티티 삭제하기

프로젝트를 진행하는데,특정 엔티티를 삭제할 때 연관된 엔티티를 전부 삭제하도록 해야 하는데 제대로 되지 않았다. 이 부분을 팀원분이 해결해주셨고, 나는 그걸 참고해서 내가 맡은 문제집

daydream-sy.tistory.com

 

 

 

 

 

 

 

 

 

2. response 수정

프론트와 연동을 하면서, 이전에 피그마로 디자인했던 디자인대로 페이지를 그리게 되었다.

물론 피그마에 있는 그대로 작업하는 과정은 이전에도 했기 때문에 익숙하다. 대신 이번에는 간단하게 나마 react-query를 적용하였다는 정도? 프론트에 비중을 그렇게 두지는 않았지만...아무튼.

 

그런데 연동해서 그리다 보니, 백엔드 쪽 response를 수정해야 하는 이슈를 발견하게 되었다.

피그마에는 문제집을 조회할 때 문제집 생성자의 프로필 이미지도 가져오고, 로그인한 사용자의 북마크 여부도 가져와야 한다. 그렇지만 구현한 response에는 그게 포함되어 있지 않았다.

 

우선 프로필 이미지를 가져오는 건 했었는데, 북마크 여부를 가져오는 건 뒤늦게 알아서 목~금 사이에 수정하였다.

https://github.com/DoDreamTeam/Backend/pull/124

 

[기능 수정 - 문제집/댓글] 문제집/댓글 조회 시 북마크 여부 추가 by seoyeon-jung · Pull Request #124 · D

요약 문제집 조회/검색 시 로그인한 경우 사용자의 북마크 여부 추가 (비회원일 경우 무조건 false) 문제집 댓글 조회 시 로그인한 경우 사용자의 좋아요 여부 추가 (비회원일 경우 무조건 false) 연

github.com

 

이게 그 당시 pull request이다.

문제집과 문제집 댓글 조회 시 비회원/회원 여부에 따라 북마크/좋아요 여부가 나오도록 했다.

비회원이면 당연히 false이고 회원일 때도 사용자가 한 북마크 여부에 따라 바뀌어서 나오도록.

아직은 북마크 쪽만 프론트에 연동해서 잘 보이는 걸 확인했는데, 다음주에 프론트도 완성하면 다 잘 나올 것 같다.

 

response를 피그마를 보면서 생각했어야 하는데, 이것도 이번이 처음이라 잘 몰랐었다.

뭔가....이번 프로젝트에서 많은 걸 배운다 ㅋㅋㅋㅋ

 

 

 

 

 

 

 

3. 프론트와 연동 ~ ing

지난 주는 백엔드 기능 구현을 했었다면 이번 주는 그 구현한 기능들을 프론트와 연동하여 화면 구현하는 일을 주로 했다.

중간중간 백엔드 오류를 고치긴 했지만, 다음주 수요일까지는 프론트 연동을 해야 하기에 나름대로 속도를 내고 있다.

 

사실 주말에도 하려고 했는데 컨디션이 안 좋아서 못하는 바람에...다음주가 조금 더 바빠질 예정이다.

 

프론트와 연동하면서, useContext를 사용해서 전역적으로 사용자 정보 관리하는 블로그 글을 작성했다.

여러 페이지에서 로그인한 사용자 정보가 필요한데, 그럴 때마다 불러오는 것보다 전역적으로 관리하는 게 더 나을것 같아서 이거저거 해보다가 결국 하게 되었고, 이제는 그걸 이용해서 사용자 정보를 불러오고 있다.

 

https://daydream-sy.tistory.com/361

 

useContext 사용해서 전역에서 유저 정보 가져오기

이번 프로젝트에서는 소셜 로그인이 있기 때문에 쿠키에서 id를 받아와서 로그인 여부를 판단하고 있다.그런데 한 가지 문제점이 생겼다.header에 유저 정보를 가져와야 한다 (유저 프로필)문제집

daydream-sy.tistory.com

 

사실 이렇게 두 파트를 전부 하는 게 처음이라 많이 복잡하기도 하고 어렵기도 하다.

프론트만 했을 때는 api 명세서 나오는거 기다리고...그거대로 연동하고...이랬는데 확실히 다르다.

 

그래도 그나마 조금 더 익숙하다고 vscode 보면서 하는게 재밌다. ㅋㅋㅋ

아직 절반 정도 진행한 것 같은데, 빨리 진행해서 완성하고 싶다.

 

 

 

 

 

 

 

 

 


다음주가 사실상 마지막 프로젝트 기간이다.

다다음주에 월요일 하루 남았고, 화요일 발표를 하면 언제 끝날까 싶었던 교육 과정도 이제 끝이다.

 

다니면서 많이 배우기도 했고 아직 부족한 점은 많지만....

그래도 성공적으로 프로젝트를 마치고 기분 좋게 마지막 회고글을 작성하고 싶다.

728x90