Sequelize - 관계설정
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), 공연(N)의 관계일 것이다.
User.associate = function (models){
User.hasMany(models.Perform,{
foreignKey: 'user_id'
})
}
Perform.associate = function(models){
Perform.belongsTo(models.User,{
foreignKey: 'user_id'
})
}
연결테이블이 필요하다.
그림에서의 관객_공연 테이블이 연결테이블이다.
위와같이 연결테이블을 사용하면 서로 연결이 가능하다.
연결테이블에서 알 수 있는 내용은,
- 철수는 락음악과,클래식을
- 명수는 락음악과,발라드를
- 재석은 클래식을 예약했다.
belongsToMany
서로 다대다 관계임을 설정하고,
through 속성을 통해 연결테이블을 생성한다.
User.belongsToMany(models.Perform, {
through: 'UserPerform',
})
Perform.belongsToMany(models.Users, {
through: 'UserPerform',
})
이렇게 해주면 sequelize가 관계 분석 후
1. UserPerform이라는 연결테이블을 자동 생성하며,
2. 컬럼은 userId,performId 가 생성된다.
추후 실제로 데이터를 생성해 연습할 예정이다.
[연습]
Author And Source
이 문제에 관하여(Sequelize - 관계설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yesparrot/sequelizeAssociations저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)