본문 바로가기
Coding/Etc

Sequelize.js Association OneToMany(hasMany) 정리

by Hide­ 2018. 7. 16.
반응형

이제 OneToMany(hasMany) 차례이다.

http://docs.sequelizejs.com/manual/tutorial/associations.html에서 OneToMany() 부분을 번역했다.


One-To-Many associations (hasMany)

One-To-Many는 하나의 source에서 여러개의 target에 연결되어 있는 형태를 말한다. 

target들은 정확히 하나의 source에 연결되어있다.

const User = sequelize.define('user', {/* ... */})
const Project = sequelize.define('project', {/* ... */})

// 먼저 hasMany 를 정의한다.
Project.hasMany(User, {as: 'Workers'})

이것을 실행해보면 projectId 또는 project_id 컬럼이 User 모델에 생성될 것이다.

또한 Project는 getWorkers , setWorkers를 얻게 된다.

가끔씩 다른 컬럼을 참조할때가 있을텐데, 이럴때는 sourceKey 옵션을 사용한다.

const City = sequelize.define('city', { countryCode: Sequelize.STRING });
const Country = sequelize.define('country', { isoCode: Sequelize.STRING });

// 이렇게 countryCode를 이용하여 contries와 cities를 연결할 수 있다.
Country.hasMany(City, {foreignKey: 'countryCode', sourceKey: 'isoCode'});
City.belongsTo(Country, {foreignKey: 'countryCode', targetKey: 'isoCode'});

지금까지 우리는 일반적인 관계 설정에 대해 다뤘다.

다음장에서 Many-To-Many 관계를 통해 좀 더 복잡한 구조에 대해 배워보자.