[BackEnd][Node.js] Express.js - ์ด๊ธฐ ๊ตฌ์ฑ : DB ์ฐ๊ฒฐ(Sequelize)
๐ ๋ชฉ์ฐจ
โ [BackEnd][Node.js] Express.js - ์ด๊ธฐ ๊ตฌ์ฑ
โ [BackEnd][Node.js] Express.js - ์ด๊ธฐ ๊ตฌ์ฑ : DB ์ฐ๊ฒฐ
โ [BackEnd][Node.js] Express.js - ์ด๊ธฐ ๊ตฌ์ฑ : DB ์ฐ๊ฒฐ(Sequelize)
๐ ๋ถ๋ก
โ [Node.js] Node.js ๊ธฐ์ด
โ [JavaScript] ๊ธฐ๋ณธ ๋ฌธ๋ฒ
โ [Web] URL์ ์ดํด
โ [Spring] Spring์ด๋?
๐ค ๋ด๊ฐ ๋ง๋ Error
โ [Node.js][Error] Cannot find module '.dotenv'
๐ Sequelize
๐ฝ ๊ฐ์
์ด๋ฒ์ `Spring` ์ง์์ `JPA`, `MyBatis`์ฒ๋ผ `ORM Library`์ธ `Sequelize`๋ฅผ ์ด์ฉํด์ Data Base๋ฅผ ์ด์ฉํด ๋ณด๋ ค ํ๋ ๊ฒ์ด์์.
`ORM`์ด๋? Object-Relational Mapping์ ์ฝ์๋ก ๊ฐ์ฒด์ ๊ด๊ณํ DB๋ฅผ Mapping ํด์ฃผ๋ ๊ฐ๋ ์ธ ๊ฒ์ด์์.
๐ฝ ์ค์น
๋ช ๋ น์ด
npm i sequelize sequelize-cli mysql2 --save
์์ ๋ช ๋ น์ด๋ฅผ ํตํด์ ์ค์น๋ฅผ ํด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
๐ก ์ฐธ๊ณ ์ฌํญ
โ sequelize-cli : Sequelize ๋ช ๋ น์ด๋ฅผ ์คํํ๊ธฐ ์ํ Package Library. Global๋ก ์ค์นํด๋ ๋ฌด๋ฐฉ.
โ mysql2 : MySQL Driver
์ด๊ธฐํ ๋ช ๋ น์ด
sequelize init
๐ก ์ฐธ๊ณ ์ฌํญ
์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ์ ๋ ์๋์ ๊ฐ์ด ๋์จ๋ค๋ฉด
์ด ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๊ธฐํ ์งํ
npx sequelize init
๋ฐ์ํ
์ด๊ธฐํ๋ฅผ ์งํํ๋ฉด ์์ ๊ฐ์ด ๋ชป ๋ณด๋ ์น๊ตฌ๋ค์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์๋ ๊ฒ์ด์์.
๐ก ์ฐธ๊ณ ์ฌํญ
โ config.json : Data Base ์ค์ File, ์ด์ฉ์ ์ด๋ฆ, Data Base ์ด๋ฆ, ๋น๋ฐ๋ฒํธ ๋ฑ์ ์ ๋ณด ์ ๋ ฅ
โ migrations : Git๊ณผ ๋น์ทํ๊ฒ Data Base ๋ณํํ๋ ๊ณผ์ ์ ์ถ์ ํ๋ ์ ๋ณด ๋ณด์ . ์ค์ Data Bas์ ๋ฐ์ํ ์๋ ์ทจ์ํ ์๋ ์๋ค.
โ models : Data Base ๊ฐ Table์ ์ ๋ณด ๋ฐ Field Type์ ์ ์ํ๊ณ , ํ๋์ ๊ฐ์ฒด๋ก ๋ชจ์๋ค.
โ seeders : Table์ ๊ธฐ๋ณธ Data๋ฅผ ๋ฃ๊ณ ์ถ์ ๋ ์ฌ์ฉ
๐ฝ ์ด๊ธฐ ๊ตฌ์ฑ
์ต์ด `config.json`์ ๋ค์ด์ค๋ฉด ์ด๋ ๊ฒ ์ด๋ฏธ ๋ด์ฉ๋ค์ด ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์.
์ด ๋ด์ฉ์ ๋ณด์ํ๋ ์ฌ๋ฌ Data Base๋ฅผ ์์ฑ ํด ๋๊ณ , Handling ํ ์ ์๊ฒ ๋ค! ๋ผ๋ ์๊ฐ์ด ๋๋ ๊ฒ์ด์์.
์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์ฉ Data Base, QA Test์ฉ Data Base, ์ด์์ฉ Data Base๋ฅผ ๋๋๋ ๊ฒ์ด์์.
์ฃผ๋ํ๋์ ์ผ๋จ ๊ฐ๋ฐ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์ ์ต์๋จ `devlopment`๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง๋ ์ญ์ ํด ๋ ๊ฒ์ด์์.
์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ `config/config.json`์ ์์ฑํ๋ `development Mode` Data Base ์ ๋ณด์ ํด๋นํ๋ DB๋ฅผ ๋ง๋ค์ด ์ค ์ ์๋ ๊ฒ์ด์์.
๊ทธ๋ฐ ๋ค์ ์์ ๊ฐ์ด `app.js`์ `sequelize`๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ์์ ์ ํด์ฃผ๊ณ , ์คํ์ ํด ๋ณด๋ฉด
์์ ๊ฐ์ด ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ ๊ฒ์ด์์.