TIL/삽질 기록소

[typeORM, Nest.js] OneToOne 관계 관련 삽질 기록

JoJobum 2022. 7. 10.

문제 

원래 기존의 User 테이블이 유저의 모든 정보를 들고 있는 방식

보안 및 소셜 로그인 방식들을 확장하기 위해

기존 유저 Entity가 공통적이고 좀 덜 중요한 정보만 들고 있고 

localUser, kakaoUser 등의 Entity 들과 OneToOne 관계를 맺는 DB를 수정하고자 하였음

One-to-One | TypeORM

TypeORM 공식 홈페이지의 One-To-One 페이지의 예시는 유저와 프로필이였지만 찾는 본질적인 관계 자체는 똑같았기에

좋은 참고자료가 되었고, 추가적인 구글링을 통해 얻은 정보로 구현하였을 때 

 

해결 과정

 

controller
service.ts

 

Service에서 콘솔 로그를 찍어보면 이미 저장한 user 와 localuser가 잘 검색되고

localuser 객체를 user의 local_user 필드에 할당해줬다고 생각하고 (여기가 틀린 생각)

이를 userRepository에 save로 저장도 했겠다

user.local_user로 다른 곳에서 localuser 정보를 활용할 수 있겠다 라고 생각했는데

이를 다른 곳에서 user.local_user를 찍어본다?? undefined 뜬다 왜냐... 

 

아래의 DB가 말해주듯 User 테이블에 userid 키가 생기고

이것이 외래키로 localuser의 pk 값와 대조해서 localuser 를 가져오는 것이라...

 

이 부분을 반영하여 const currentUser = ~~~ 을 보면 User의 pk 인 userId를 활용하여 User를 찾고 옵션값으로 relations 에 가져오길 원하는 테이블을 적으면? 아래의 postman 의 결과를 보듯이 잘 가져온 것을 확인할 수 있었다.

 

postman 결과

 

 

내가 이 부분에 대해서 검색하고 다녔는데 나같이 바보같은 생각을 하는 사람이 없어서 인지 자료가 없어서 더욱 오래 걸린 것 같다.

정말 해결하고 보면 너무 기초적인 내용인데...막상 막혔을 때 도대체 왜안되지? 라는 의문에 정말 머리가 아프다 .

최근 계속 이런 경우가 많은데 내가 너무 바보같다는 생각이 마구마구 든다 ㅎㅎ...

기록을 남기는 것도 부끄럽지만 그래도 혹시 누군가 나랑 같은 실수를 한다면 빨리 해결하길 바라며 남긴다.

반응형

댓글