인프런 커뮤니티 질문&답변
안녕하세요~
작성
·
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는 노드에서 그 컬럼명을 어떻게 호출할지에 대한 설정이라고 보시면 됩니다.




