[TIL] 2022_04_14

hyomin·2022년 7월 6일
0

TIL

목록 보기
9/14

sequelize 관계설정

1:N

1:N 관계
한명의 user가 여러 개의 comment를 작성함

hasMany : users테이블의 로우 하나를 가져올 때 연결된 comments 테이블의 로우들(여러개)을 같이 불러온다

belongsTo : comments 테이블의 로우를 불러올 때 연결된 users 테이블의 로우를 가져옴

User.associate = (db) => {       
        db.User.hasMany(db.Post);
        db.User.hasMany(db.Comment);    
};

N:M

N:M 관계
belongsToMany

case 1 )
하나의 Post 에는 여러개의 tag 가 달릴 수 있고,
하나의 tag 에는 여러개의 Post가 관련될 수 있다

case 2 )
한명의 User는 여러개의 Post를 쓸 수 있고,
하나의 Post 에는 여러 User의 좋아요가 관련될 수 있다

Post : Like = 1: N // 하나의 게시글에 여러개의 좋아요
User : Like = 1: N // 한명의 user는 여러개의 좋아요를 가짐

즉 USER : POST =N:M

Parent.belongsToMany(Child, {
    as: [Relationship],
    through: [Parent_Child] //this can be string or a model,
    foreignKey: 'Parent_rowId'
});

Child.belongsToMany(Parent, {
    as: [Relationship2],
    through: [Parent_Child],
    foreignKey: 'Child_rowId'
});

as : 가끔씩 관계를 사용할 때 사용하는 모델의 이름을 바꾸고 싶을 때가 있다.
이럴 때는 아래처럼 as 옵션을 사용

through: Like로 했다면, Like 라는 through table이 mysql 데이터베이스에 생성된다.

profile
🌱

0개의 댓글