팔로잉과 팔로워 관계
138
작성한 질문수 27

deserializeUser에서 req.user에 넣을 팔로잉이랑 팔로워 찾으실 때, as는 모델 관계의 as를 따라간다고 하셨는데
왜 위 코드에서 Follwers가 //팔로잉이고 Followings가 //팔로워라고 하신 건지 모르겠습니다ㅜ
예를 들어, 저의 팔로잉을 찾으려면 제 아이디를 팔로워 아이디에서 찾아야 하니까 기준 아이디가 followerId가 되는 Followings가 맞는거 아닌가요?
답변 2
0
AI 인턴 답변도 참고하시면 됩니다
많이 헷갈려하시는 부분인데요. 결론적으로는 as를 기준으로 생각하시면 됩니다.
내 Followers를 모두 찾을 때를 생각해봅시다. 아이러니하게도 followerId가 아니라 followingId를 봐야 찾을 수 있습니다. followingId가 내 아이디랑 같은 로우의 followerId를 모두 불러오면 그게 내 follower들입니다. 그리고 이게 바로 foreignKey의 역할입니다. 원하는 것과 연결된 외부의 것을 가리킵니다. 그래서 제가 설명에서 belongsToMany는 as와 foreignKey가 반대라고 한 겁니다.
0
저도 똑같이 생각합니다! 본문에도 그렇게 써 놨습니다
그래서 User 모델도 잘 생성하고 그 때는 의문점이 없었습니다.
Followers가 followingId를 foreign key로 하는 건 완전히 이해했는데
위 코드만 봤을 때 Followers에 주석으로 팔로잉이라고 적으신 이유를 모르겠다는 의미입니다. Followers는 어쨌든 팔로워 아닌가여..??
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용에 대해, 팔로워와 팔로잉 관계 설정에서 생기는 혼란에 대해 설명드리겠습니다. Sequelize에서 belongsToMany 메서드를 사용해 다대다 관계를 정의할 때, as 옵션은 모델 간의 관계를 나타내는 별칭(alias)입니다. 이 별칭을 사용하여 Sequelize가 자동으로 관계 메서드를 생성합니다. 이때 as 옵션의 이름이 메서드 이름에 반영되게 되는데, 관계를 설정할 때 사용하는 Follower와 Following의 개념을 코드상에서 어떻게 적용하느냐에 따라 혼란이 발생할 수 있습니다.
예를 들어, 사용자 A가 사용자 B를 팔로우한다면, 사용자 A는 B의 Follower가 되고, 사용자 B는 A의 Following이 됩니다. 그러나 코드상에서 이 관계를 정의할 때, as 옵션에 사용되는 명칭은 그 관계를 코드를 읽는 사람에게 어떻게 전달하느냐에 따라 달라질 수 있습니다. 따라서 Followers와 Followings라는 용어가 실제로 어떤 엔티티를 지칭하는지는 그 관계를 설정한 코드의 컨텍스트에 따라 달라지게 됩니다.
질문자님의 혼란을 해결하기 위해, 이전에 제로초(조현영) 강사님이 답변해주신 내용이 도움이 될 수 있을 것 같습니다. 강의에서 언급하신 부분과 유사한 상황을 설명하고 있으니, 참고하시면 좋을 것 같습니다:
- “await user.addFollowers(req.user.id)에서 궁금한점이 있습니다.”에서 제로초 강사님은 as 옵션과 외래 키(foreignKey) 사용법을 설명하셨습니다. 특히, as를 기준으로 어떤 아이디가 외래 키로 설정될지 설명하는 부분이 이해에 도움이 될 것입니다.
질문의 세부적인 코드 컨텍스트에 대해선 제공된 정보만으로는 정확한 설명이 어려울 수 있으나, 제로초 강사님의 위 답변은 Sequelize에서 as 옵션과 관계 설정에 대한 기본적인 이해를 돕는 좋은 예시입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
깃헙 질문
0
79
2
강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.
0
74
1
aws - lightsail 이용 관련
0
56
1
4강 http 서버 만들때 ESM방식으로 해도 될까요?
0
78
2
모듈 사용 시 단점이 있나요?
0
78
1
node.js 버전 및 typescript 적용 문의
0
91
2
12.7. 방장기능(강퇴) 질문드립니다.
0
78
2
12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요
0
67
1
12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.
0
73
2
12.7.1스스로 해보기 질문되나요
0
89
3
시퀄라이즈 실습하기 질문드립니다.
0
186
9
<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.
0
94
2
크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.
0
109
2
구매 결제관련 질문입니다 !
0
120
1
다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제
0
130
2
node 설치 방법이 전혀다르게 바뀐것 같습니다.
0
146
2
12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류
0
119
2
무료/프리미엄 동시 소유 시 질문
0
113
1
비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?
0
133
2
10강 cors에러 localhost:4000으로 접속했을때 에러
1
155
2
webstorm 해결할 수 없는 변수 문제
0
152
2
혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?
0
146
2
LightSail 실행 중 오류 질문드립니다!
0
198
2
RedisStore 사용법 질문
0
129
2





