해결된 질문
작성
·
587
0
안녕하세요. 강의를 보며 이것저것 만들어 보는 중에 DB에 대한 이해가 부족해서 질문을 드립니다
강의에서 유저와 유저 사이의 팔로우 관계를 통해 Follow라는 through 테이블이 만들어졌고 구조가 이런식인데요
FollowingId FollowerId
1 2
이 Follow 테이블을 임의로 정의할 때,
FollowingId FollowerId Following Follower
1 2 멍멍이 야옹이
이런식으로 FollowingId와 FollowerId에 해당하는 유저의 닉네임을 Follow 테이블의 컬럼으로 가져올 수 있는 방법이 있는지 궁금합니다.ㅜㅜ
감사합니다.
답변 8
0
그게 문제였네요ㅜㅜ
through 테이블이라 자동으로 엮일 줄 알고 제가 associate를 간과했던 것 같습니다 제로초님
귀한 시간 내주셔서 정말정말 죄송하고 감사드립니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
네 Follow.associate에 User가 없어서 에러나는 것입니다.
Follow에서 User를 include하는 경우에는 Follow.associate에 User가 들어있어야 합니다.
User에서 Follow를 include한다면 User.associate에 Follow가 들어있어야 하고요.
0
0
User.belongsToMany(User, { through: Follow, as: ..., foreignKey: ... })를 안 하신 것 아닌가요? Follow 모델이 User와 연결되지 않았다고 뜨네요.
또한 Follow 모델에서도
Follow.belongsTo(User, { as: 'Follower', foreignKey: 'FollowerId' });
Follow.belongsTo(User, { as: 'Following', foreignKey: 'FollowingId' });
가 되어있어야 합니다.
사실 지금 Group과 Follow와 User 관계가 매우 이상합니다. Follow관계에 Group이 껴있어야 하는 이유가 없지 않나요?
어떤 사람이 저와 가족 관계라면 그냥 Group에만 가족에만 표시해두면 됩니다. id: 5, relationship: 'family' 이런 식으로요. 꼭 그게 follow 관계와 엮어있어야하는지 모르겠네요. 설령 Group을 팔로워/팔로잉 관계가 맺어진 사람만 지정할 수 있다고 하더라도요.
Group 모델은 어떤 식으로 구성되어있는지 보여주세요.
0
0
0
음 제가 강의를 보며 개인 프로젝트를 만들어 보고 있는 중인데... 제가 팔로우 중인 유저들을 친구, 가족, 동료 등 나만의 그룹으로 묶으려고 합니다.
제가 생각한 것은, 먼저 Group이라는 모델을 만든 후에
User와 Group을 User.hasMany(Group) 관계로 맺어주고,
유저 간의 팔로우를 나타내는 Follow 모델을 Group 모델에 속하도록 Group.hasMany(Follow) 관계로 했습니다.
이렇게 하니 Group모델에서 include를 통해 Follow 테이블은 가져올 수 있는데, FollowingId에 해당하는 유저의 닉네임은 가져올 수가 없어서요..ㅠㅠㅠ
제가 잘못 설계한 것인지 궁금합니다
0