■ 설치
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 |