개발일지/Node

[Sequelize] 기본키가 아닌 다른 키로 외래키 지정할 때

낙락장송s 2023. 5. 17. 18:27

Sequelize를 이용해서 DB 조회를 하던 중 부모 테이블의 기본키가 아닌 다른 키를 참조해서 자식 테이블을 불러와야 할 필요가 있었다.

A 테이블

a_idx (primary key) b_idx a_name
1 1 그룹명

B 테이블

b_idx b_name b_description
1 아무개 프로그래머
db.A.hasMany(db.B, { foreignKey: 'b_idx', as: 'B' })
db.B.belongsTo(db.A, { foreignKey: 'b_idx', as: 'A' })

A 테이블의 a_idx가 기본 키로 설정되어 있고, a_idx가 아닌 b_idx를 참조하려 foreignKey: 'b_idx' 값을 줬더니, 멋대로 a_idx 값을 참조했다. sourceKey: 'b_idx'까지 추가하여 해결하였다.

db.A.hasMany(db.B, { foreignKey: 'b_idx', sourceKey: 'b_idx' as: 'B' })
db.B.belongsTo(db.A, { foreignKey: 'b_idx', as: 'A' })