본문 바로가기
서버 개발/node

[nodejs] sequelize, 커스텀 외래키, 다대다 관계 설정

by JIMYEONG 2021. 8. 12.
반응형

다대다 관계(Many to Many)를 설정해 주기 위해서 모델 클래스 내부에 있는 belongsToMany(Model, Option)을 사용하면 된다.

  • Option 에는, through 옵션을 사용해서 junction Table을 지정해주어야 한다.
  • 같은 테이블을 ManyToMany로 쓴다면, as 옵션을 통해서, Allias 를 주어야 한다. 인터프리터/컴파일러가 다른 테이블로 식별할 수 있도록
    예) user 를 sender와 receiver로 Mail이라는 junction table에 넣고 싶은 경우,
  • OnDelete, OnUpdate등의 옵션을 통해서, 참조하고 있는 필드가 삭제된 경우에 대해 대응 할 수 있다 (REGISTRICT, CASCADE, SET NULL )
    module.exports = class A extend Sequelize.Model{
    ... 
    static associate(db){
          db.A.belongsToMany(A, {through: C, foreignKey: "senderId", as: sender})
          db.A.belongsToMany(A, {through: C, foreignKey: "receiverId", as: receiver}) 
        }
    }
반응형