220530 팀프로젝트 회고

Parker.Park·2022년 5월 30일
0

CodeCampTeamProject

목록 보기
19/22
post-custom-banner

220530 팀프로젝트 회고

ManyToMany 에서 query 고민

이번 프로젝트에서 ERD를 보면 분리된 테이블 있다. ManyToOne 관계에서 결과값을 보여 줄 때는 QueryBuiler를 통해서 'leftJoinAndSelect'를 통해서 결과값을 불러올 수 있었다.
그렇다면 ManyToMany 관계에서 TypeORM으로 가져오려면 어떻게 해야 할까?
우선 문제의 ERD 부분이다.

이중 눈여겨 봐야 할 것은 '참여회원 세부사항' 테이블과 '세부일정' 테이블이다. 유저는 여러 '프로젝트'를 참여 할 수 있고, 프로젝트 여러 세부 일정을 만들 수 있다.
그렇다면 한 명의 회원이 참여한 프로젝트에서 해당하는 세부일정은 어떻게 검색해야 할까. 잠깐 함정에 빠졌던 것은 세부일정에 있는 유저ID는 작성자이기 때문에 참여한 유저랑은 관계가 없다는 것이다.
먼저 생각했던 것은 결과값을 만들기 위해서는 '참여회원 세부일정'에서 '유저'가 속한 프로젝를 리스트하여, '세부일정'에서 프로젝트 아이디로 검색한 결과값을 합하는 것이다. 그렇다면 query를 최소 2번을 실행하여 취합하는 과정을 걷혀야 했다.
좀 더 간결한 방법은 없을까? QueryBuilder 사용시 조인테이블을 사용하는데 응용하면 되지 않을까? 생각했다. 결론적으로는 구현하지 못했다. 먼저 innerjoin이라는 기능은 사용 할 수있지만, 현재 알고있는 TypeORM 으로는 1개의 repository밖에 적용할 수 없었다.

Mysql에서는 힘들게 구현 했다.

SELECT * FROM schedule s, project_participant pp  
WHERE s.projectProjectId =pp.projectProjectId 
AND pp.userUserId ="UserId";

마치면서

상당히 오랜 시간동안 고민하고 그랬는데 Mysql로 구현하고 나니깐 다시 QueryBuiler로도 적용할 수 있을거 같기도 한다. 또한 innerJoin에 대해서 공부를 하게 되었고, 이어서 outerjoin같은 것도 참고 하게 되었는데...어려워서 후에 다시 공부하도록해야겠다.
프로젝트도 마감이 되어가고 마무리할 것들, 다시 복기해야 할것들이 생각난다.

profile
개발자준비중
post-custom-banner

0개의 댓글