강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

송지훈님의 프로필 이미지
송지훈

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

시퀄라이즈 sync + nodemon

안녕하세요~

작성

·

172

0

리트윗같은 자기 자신과의 일대 다 관계에서는

db.Post.belongsTo(db.Post, {as: 'Retweet'})

처럼 하나만 적어주면 되는 것인가요?

db.Post.hasMany(db.Post) 이거 안적어 주어도되죠??

그리고

db.Post.belongsTo(db.Post, { as: 'Retweet' });
as도
RetweetId로 생성이 되는데 이유가 머에요??
foreignKey로만 설정되는게 아닌가요??
db.Post.belongsToMany(db.User, {
      through: 'Like',
      as: 'Likers' /* Likers는 포스트의 좋아요를 누른 사람들 */,
   });
db.User.belongsToMany(db.Post, {
      through: "Like",
      as: "Liked"//  Liked는 좋아요를 누른 Post들
   });
위의 두개는 아래처럼
as가 있음에도 PostId, UserId로 생성되서
헷갈려서 질문 드렸습니다.

아 그리고 강의 감사히 잘 보고 있어요.

좋은 하루 보내세요~

답변 5

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 맞습니다~

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

자기자신과의 belognsTo인 경우 기본적으로 PostId여야 하지만 Post테이블에 PostId가 있으면 헷갈릴수밖에없습니다. 그래서 as를 기반으로 foreignKey를 생성합니다.

0

송지훈님의 프로필 이미지
송지훈
질문자

오 감사합니다.

그럼 마지막으로

이 상황에서

foreignKey대신 as를 사용하는 이유는

1. as를 기반으로 foreignKey를 생성

2. as로 설정하면 나중에 Retweet으로 불러오기 편함

이 두가지 이유 때문이라고 생각해도 되나요?

0

송지훈님의 프로필 이미지
송지훈
질문자

답변 감사합니다.

제가 설명을 잘 못해서 일단 죄송합니당.

제가 궁금한 것은

db.Post.belongsTo(db.Post, { as: 'Retweet' });

여기서는 foreignKey를 적어주지 않앗는데도

왜 RetweetId가 생성되었는지 궁금해서 여쭤봣어요 ㅠㅠ

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

리트윗은 belongsTo만 적어주셔도 됩니다. as는 테이블 컬럼명을 정하는 역할이 아닙니다. foreignKey로만 정하게 됩니다. as는 노드에서 그 컬럼명을 어떻게 호출할지에 대한 설정이라고 보시면 됩니다.

송지훈님의 프로필 이미지
송지훈

작성한 질문수

질문하기