본문 바로가기

엉터리 개발 이야기

sequelize cli(migration)

반응형

■ 설치

npm install --save sequelize-cli


■ init

node_modules/.bin/sequelize init

==> .bin 폴더 하위에 

config > config.json

migrations

models > index.js 

seeders 

으로 생성됨


■ Model Create

sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string


models > users.js 생성됨

migrations > timestamp-create-user.js 생성됨


■ Migration

sequelize db:migrate

Users 테이블이 생성됨


■ 활용방법

sequelize migration:generate 로 빈 migration.js 파일 생성


module.exports = {
  up: function (queryInterface, Sequelize) {
    return [
      queryInterface.addColumn('User', 'name', {
        type: Sequelize.STRING
      }),
      queryInterface.addColumn('User', 'nickname', {
        type: Sequelize.STRING,
      })
    ];
  },

  down: function (queryInterface, Sequelize) {
    return [
      queryInterface.removeColumn('Challenges', 'name'),
      queryInterface.removeColumn('Challenges', 'nickname')
    ];
  }
};

출처 : http://blog.jeonghwan.net/sequelize-migration/


생성후 db:migrate 수행


model 업데이트 방법은..아직 없는듯!?!?


■ foreign key 추가

up: (queryInterface, Sequelize) => {
return [
queryInterface.addColumn('users', 'groupId', {
type: Sequelize.INTEGER,
allowNull:false
}),
queryInterface.addConstraint('users', ['groupId'], {
type: 'foreign key',
name: 'fk_user_groupid',
references: {
table: 'groups',
field:'id'
},
onDelete: 'no action',
onUpdate: 'no action'
})
];
down: (queryInterface, Sequelize) => {

return queryInterface.removeColumn('users', 'groupId').then(() => {
//queryInterface.removeConstraint('users', 'fk_user_groupid');
});


constraint 를 삭제해줄 필요 없다..column을 삭제하면 같이 삭제된다...


참고

restrict - 참조하는 부모테이블의 column이 삭제되어도 지우지 말고 버텨라. 

cascade - 참조하는 부모테이블의 column이 삭제되면 자식 테이블의 column도 모두 삭제하라

set null - 참조하는 부모테이블의 column이 삭제되면 자식 테이블의 column이 모두 null 이 된다

no action - 참조하는 부모테이블의 column이 삭제되도 무시하라. 

set default - 참조하는 부모테이블의 column이 삭제되면 지정된 값으로 대체하라.

반응형

'엉터리 개발 이야기' 카테고리의 다른 글

ie11 symbol 정의 되지 않았습니다. 처리 방법  (0) 2019.01.14
react + bootstrap  (0) 2018.11.14
flask cors  (0) 2018.08.02
용어정리  (0) 2018.08.02
flask-migrate example  (0) 2018.07.19