팀 프로젝트 20일차 회고

·2022년 5월 28일
0

팀 프로젝트

목록 보기
21/34

팀 프로젝트 마지막 주말, 막차놓쳐서 부캠에서 밤새고 집가서 잤다가 돌아와서 쓰는 토요일 회고다.

아, 마음대로 안되네 리팩토링

게시판을 검색하는 유형이 상당히 많아서, board 서비스에 쿼리문이 상당히 많다.

그런데 계속 중복되는 구문이 있어서 이것을 합쳐서 해보려고 했는데, 이유는 잘 모르겠지만 엉망진창으로 다 꼬여버려서
적어놨던 코드를 롤백시켜버리는 일이 발생했다.

공통되는 부분을 클래스 최상단에 적어놓고. this를 사용하여 땡겨쓰는 작업으로 코드의 절대량을 줄여보고자 했는데.

어지간한 부분에서는 정상적으로 작동이 되는 것을 확인했으나 특정 쿼리에서 정상적인 값을 내놓지 못하고
분명 레프트 조인을 한번만 넣어놨는데, 중복된 조인이 있다며 유니크한 alias가 아니라며 에러가 나와서

지금 이걸 고집했다가는 망할게 분명하므로 원래 썼던 코드로 돌려놨다.

그래서 나중에는 꼭 리팩토링을 해서 코드를 줄여놓으려고 한다.

참고해서 볼만한 블로그 => https://medium.com/@beygee/nest-js-typeorm-%EB%A6%AC%ED%8C%A9%ED%84%B0%EB%A7%81-querybuilder-b6b3a5c3b3ea

new Brackets?

만약 검색엔진 서버가 죽을 경우, Main DB에라도 접근을 해서 값을 가져와야하는데
그러한 쿼리문을 작성하는게 너무 복잡해서 미뤄놓고 있는 상황이였다.
그저 or이라면 쉬웠겠지만, and로 조건 검색이 필요했기 때문에 새로운 문법이 필요하다는 것을 깨달았다.

그렇게 찾아보던 와중 new Brackets 이라는 조건을 여러번 걸어주는 구문이 있다는 것을 알았고,
작성을 해보려했으나 SQL을 지금까지 공부해본 적이 없는 사람이라 이것에 시간을 소모할 경우에는 작업에 차질이 생길 것 같다라고 판단하여 이러한 구문이 있음에도 불구하고 조금 미뤄놓고 사용하지 않았는데 어지간한 것이 다 작업이 완료가 되서
한번 적어보게 되었다.

위의 코드로는 내가 원하는대로의 검색은 되지 않았지만, 어떻게 사용을 하면 되는지 알겠다는 판단이 설 수 있게 되었다.

더불어서 쿼리문에서 if else if를 쓸 경우에 원하는 값이 잘 나오지 않는다는 것도 알게 되었다(...)
이건 분명 내가 코드를 제대로 못 짠 문제라고 생각하지만 if else로 조건을 이어갈 경우에는 제대로된 답이 나오지 않고
그냥 if문으로 똑똑 떼놓으면 정상적인 답이 나오는 것으로 보아 고민을 조금 더 해봐야할 것 같다.

정말 쿼리문에는 In Like Bracket 등등등 정말 많은 조건이 있다는 것을 알게 되었고, 정말...정말 어렵다고 생각한다.

소셜 로그인?

아직은 미해결인 상태지만 곧 해결이 될 것 같은 소셜 로그인이다.

소셜 로그인은 프론트엔드에서는 정말 아무런 작업을 하지 않고 라우터로 페이지를 넘겨준다거나,
A태그로 해당하는 링크로 보내주면 알아서 로그인이 되는 구조로 되어있다.

이것은 프론트의 로그인 컨테니어쪽(?) 코드인데 정말 라우터로 해당하는 콜백 url로 넘겨버리는게 전부다.

위의 움짤을 보면 상단의 로그인이 유저 이미지로 바뀌어야하는데 바뀌지 않는 모습을 볼 수 있다.

그렇지만 저 상태로 글을 작성하면 글이 작성되고(로그인 안하면 안되게 막아놨음)

작성된 유저의 이름이 정상적으로 표시되는 것까지 확인을 할 수 있다(??)

그래서 프론트한테 물어봤는데 권한분기가 들어가야하는데 리프레시토큰으로만 리턴이 와서 그런 것 같다며 추가로 작업을 해주기로 했다.

그런데 지금 내 로컬에서는 문제없이 구글 로그인이 되는데 타 팀원의 컴퓨터에서는 구글 로그인이 되지 않아서 이건 또 어디서 문제가 있는지 확인을 해봐야할 것 같다(...)

5/31

이거 나중에 알아보니 유저를 가져오는 리턴 값 중에 소셜로그인은 핸드폰 번호가 없어서 발생한 문제였다.
그래서 핸드폰 번호 디폴트값을 줬더니 해결됐다!

profile
물류 서비스 Backend Software Developer

0개의 댓글