Sequelize - 관계설정

3709 단어 node.jsORMdbORM

Sequelize Associations

1:N의 관계

hasMany

  • 한명의 관객은 여러개의 공연을 예약할 수 있다.
    이때의 관계는 관객(1), 공연(N)의 관계일 것이다.

User.associate = function (models){
   User.hasMany(models.Perform,{
    foreignKey: 'user_id'
 }) 
  
}

belongsTo

  • 반대로 하나의 속성을 가질 때
Perform.associate = function(models){
   Perform.belongsTo(models.User,{
    foreignKey: 'user_id' 
   })

}

N:M의 관계

  • 한명의 관객이 여러 공연을 예약할 수 있고, 하나의 공연이 여러명의 관객을 예약받을 수 있다면?

연결테이블이 필요하다.

그림에서의 관객_공연 테이블이 연결테이블이다.
위와같이 연결테이블을 사용하면 서로 연결이 가능하다.

연결테이블에서 알 수 있는 내용은,

  1. 철수는 락음악과,클래식을
  2. 명수는 락음악과,발라드를
  3. 재석은 클래식을 예약했다.

belongsToMany

서로 다대다 관계임을 설정하고,
through 속성을 통해 연결테이블을 생성한다.

User.belongsToMany(models.Perform, {
through: 'UserPerform',
})

Perform.belongsToMany(models.Users, {
through: 'UserPerform',
})

이렇게 해주면 sequelize가 관계 분석 후
1. UserPerform이라는 연결테이블을 자동 생성하며,
2. 컬럼은 userId,performId 가 생성된다.

추후 실제로 데이터를 생성해 연습할 예정이다.
[연습]

좋은 웹페이지 즐겨찾기