December 08, 2020
npm install --save sequelize
๋ง์ด๊ทธ๋ ์ด์ ์ ํ ์ ์๋๋ก ๋๋ ํด์ด๊ณ CLI ์์ ๋ชจ๋ธ์ ์์ฑํด์ฃผ๊ฑฐ๋, ์คํค๋ง ์ ์ฉ์ ํ ์ ์๋๋ก ๋๋๋ค๊ณ ํ๋ค.
npm install --save-dev sequelize-cli
npx sequelize-cli init
์ด ๋ช ๋ น์ด๋ฅผ ํตํด ์๋์ ๊ฐ์ ํด๋๋ค์ด ์์ฑ๋๋ค.
https://sequelize.org/master/manual/migrations.html
config/config.json ์ ํ์ธํด๋ณด๋ฉด ์๋ ์ฝ๋์ ๊ฐ๋ค.
๊ทธ์ค development ์ password ์ database ๋ฅผ ์์ ํด ์ฃผ์๋ค.
database ๋ ์คํ๋ฆฐํธ์ ์ฐ์ผ ์๋ก์ด ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์์ฑํด ์ฃผ๋ฉด ๋๋ค.
{
"development": {
"username": "root",
"password": "****",
"database": "prac_mvc",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
๊ฐ๋ฐ ํ๊ฒฝ, ํ ์คํธ ํ๊ฒฝ, ๊ฐ๊ฐ์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ host ์ ํจ์ค์๋ ๋ฑ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๊ฒฝ์ ์ธ๊ฐ์ง๋ก ๋๋๋ค๊ณ ํ๋ค.
models/index.js ์์๋ง ๋ณด๋๋ผ๋
const env = process.env.NODE_ENV || 'development'
โdevelopmentโ ๊ฐ ๊ธฐ๋ณธ ํ๊ฒฝ์ผ๋ก ์ค์ ๋์ด ์์์ ํ์ธํ ์ ์๋ค.
npx sequelize-cli model:generate --name url --attributes url:string,title:string,visits:integer
๋ชจ๋ธ (ํ ์ด๋ธ์ ์ด๋ฆ) ์ด๋ฆ์ url ๋ก ์ง์๋๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ์๋์ ์ผ๋ก s ๋ฅผ ๋ถ์ฌ ๋ณต์ํ์ผ๋ก ๋ฐ๊ฟ ์ค๋ค.
๊ทธ๋ฆฌ๊ณ attributes ์ ๋ค์ด๊ฐ์ผ ํ ์นผ๋ผ์ธ url, title, visits ์ ํด๋น ์ปฌ๋ผ์ ํ์ ์ ์ ์ด์ฃผ๊ณ ์์ฑํ๋ค.
visits ์ ๊ธฐ๋ณธ๊ฐ์ 0์ผ๋ก ์ค์ ํ๊ณ ์ถ๋ค.
์ฒซ๋ฒ์งธ๋ก url.js ๋ด์์๋
url.init(
{
url: DataTypes.STRING,
title: DataTypes.STRING,
visits: { type: DataTypes.INTEGER, defaultValue: 0 },
},
{
sequelize,
modelName: 'url',
}
)
๋๋ฒ์งธ๋ก migrations/20201208XXXXXXXX-create-url.js ์์๋
visits: {
type: Sequelize.INTEGER,
defaultValue: 0,
},
์ด๋ ๊ฒ ํ๋ฉด ORM ๊ณผ SCHEMA ๋ชจ๋์ visits ์ ๊ธฐ๋ณธ๊ฐ์ด 0์ผ๋ก ๋ฐ์๋๋ค.
์์ ์ฌํญ์ ๋ฐ์ํ๊ธฐ ์ํด์๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ํด์ค์ผ ํ๋ค.
npx sequelize-cli db:migrate
์ด์ MySQL ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ describe urls ๋ฅผ ํตํด ์ปฌ๋ผ๋ค์ด ์ ๋๋ก ๋ค์ด์๋์ง ํ์ธํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ค ํด๋๊ณ ์ ๋ญ๊ฐ ์์ ์ ํด์ผ ํ ๋๊ฐ ์๋ค.
์ฝ๋๋ฅผ ์์ ํ๊ณ ์ ์ฅํ๋ฉด ๋์ง ์์๊น ์ถ์๋ฐ ๋ฐ์์ด ๋์ง ์์๋ค.
์ด๋๋
๋ง์ด๊ทธ๋ ์ด์ ์ทจ์ - (์ฝ๋)์์ ํ๊ธฐ - ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ
์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
You can use db:migrate:undo, this command will revert most recent migration.
npx sequelize-cli db:migrate:undo
You can revert back to initial state by undoing all migrations with
db: migrate: undo: all
command.
You can also revert back to a specific migration by passing its name in โto option.
npx sequelize-cli db:migrate:undo:all --to XXXXXXXXXXXXXX-create-posts.js