Sequelize๋ฅผ ํตํ DB ์ ๊ทผ
ํ๋ก์ ํธ ์งํ ๋์ค ์ ์ ๋ชจ๋ธ์ ๊ด๋ฆฌ์ ์ ๋ฌด ์ปฌ๋ผ์ ์ถ๊ฐํ๋ ๊ฒ์ ๊น๋นกํด ์ด๋ฅผ ์์ ํด์ผํ ์ผ์ด ์๊ฒผ์ต๋๋ค.
DB๋ฅผ ๋ค์ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์กด์ฌํ๊ฒ ์ง๋ง ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ค์ ๋ณต๊ตฌ๊ฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
์ด๋ด๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด sequelize
์ migration
์
๋๋ค.
์ปฌ๋ผ ์ถ๊ฐํ๊ธฐ
ํ์ฌ User
ํ
์ด๋ธ์ admin
์ด๋ผ๋ ์ปฌ๋ผ์ด ์กด์ฌํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ migration
ํ์ผ์ ์์ฑํ ๋ค ์ด๋ฅผ ๊ธฐ์กด์ DB์ ๋ฐ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
migration ํ์ผ ์์ฑ
์ฐ์ ์ปฌ๋ผ์ ์ถ๊ฐํ migration
ํ์ผ์ ์์ฑํด์ค๋๋ค.
์๋ ๋ช
๋ น์ด๋ฅผ ์ํํ๋ฉด migrations
๋๋ ํ ๋ฆฌ ํ์์ addColumn.js
ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
$ sequelize migration:create โ-name addcolumn
migration ์ฉ js ํ์ผ ์์
migration
ํ์ผ์ ์์ฑํ์ผ๋ฉด ์ด์ ๊ธฐ์กด ํ
์ด๋ธ์ ์๋ก์ด ์ปฌ๋ผ์ ์ถ๊ฐํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.queryInterface
์ addColumn
๋ฉ์๋๋ฅผ ํตํด user
ํ
์ด๋ธ์ admin
์ปฌ๋ผ์ ์ถ๊ฐํฉ๋๋ค.
์ด๋ ํด๋น ์ปฌ๋ผ์ ์์ฑ์ ๊ฐ์ฒด ํํ๋ก ์ ์ํ ๋ค ์ธ์๊ฐ์ผ๋ก ๋๊ฒจ์ค๋๋ค.
migrations/addColumn.js
"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
*/
return queryInterface.addColumn("users", "admin", {
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: false,
});
},
down: (queryInterface, Sequelize) => {},
};
migrate ํ๊ธฐ
addColumn.js
ํ์ผ ํธ์ง์ ๋ง์ณค๋ค๋ฉด ์ด์ ๋ณ๊ฒฝ์ฌํญ์ ์ค์ DB์ ๋ฐ์ํด์ฃผ๊ธฐ ์ํด migrate
์์
์ ์ํํฉ๋๋ค.
์ ๋ ํ์ฌ ๊ฐ๋ฐํ๊ฒฝ์์ DB๋ฅผ ์กฐ์ํ๊ณ ์์ด์ ์ธ์๋ก development
๋ฅผ ์ค์ ํ์ต๋๋ค. (config ์ค์ ์ ๋ฐ๋ฆ)
์ดํ DB ์คํค๋ง๋ฅผ ์กฐํํด๋ณด๋ฉด User
ํ
์ด๋ธ์ admin
์ปฌ๋ผ์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
$ sequelize db:migrate --env development
๋ค์ค ๋ง์ด๊ทธ๋ ์ด์
์ฌ๋ฌ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์
์์
์ด ํ์ํ ๊ฒฝ์ฐ๋ ํด๋น ์์
๋ค์ Promise
๋ฐฐ์ด ํํ๋ก ๋ฐํํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์์๋ก ๋ค์๊ณผ ๊ฐ์ด ์๋ก์ด ์ปฌ๋ผ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ์์
์ด ๊ฐ๋ฅํฉ๋๋ค.
"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return Promise.all([
queryInterface.addColumn("users", "admin", {
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: false,
}),
queryInterface.changeColumn("users", "password", {
type: Sequelize.STRING(30),
allowNull: false,
unique: false,
}),
]);
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
},
};
์ฐธ๊ณ ์๋ฃ
'๐จโ๐ป web.dev > node' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Node.js ์๋ฒ์ Redis ์ ์ฉํ๊ธฐ (1) | 2022.05.28 |
---|---|
multer ๋ชจ๋์ ํ์ฉํ ์ด๋ฏธ์ง ํ์ผ ์ ๋ก๋ ํํ ๋ฆฌ์ผ (2) | 2021.03.05 |
Node.js์ MySQL๋ฅผ ์ด์ฉํ ๊ฒ์๊ธ ์์ฑํ๊ธฐ ํํ ๋ฆฌ์ผ (0) | 2021.03.05 |
Node.js ํ๊ฒฝ์์ ๋ค์ด๋ฒ Open API ํ์ฉํ๊ธฐ (0) | 2021.03.02 |
Node.js CORS ์ค์ ํ๊ธฐ (2) | 2021.03.02 |
๐ฌ ๋๊ธ