๐ฑ Node.JS์ MySQL์ด ์ค์น๋์ด ์๋ค๋ ๊ฐ์ ํ์ ๊ธ์ ์์ฑํ์ต๋๋ค.
Sequelize๋?
NodeJS์์ MySQL์ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ณดํต ์ฟผ๋ฆฌ๋ฌธ์ ์ด์ฉํด์ ๋ฐ์ดํฐ์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์๋ ์์ง๋ง, Sequelize๋ ORM(Object Relational Mapping)์ผ๋ก ๊ตฌ๋ถ๋๊ธฐ ๋๋ฏ๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๋นํด ๋ณด์์ฑ์ด ์ฐ์ํ๋ค.
๋ํ, ์ํ๋ผ์ด์ฆ๋ฅผ ์ฐ๋ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ์์์ ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
ํ๋ก์ ํธ ์์ฑ ํ Sequelize ์ค์นํ๊ธฐ
express ํ๊ฒฝ์ ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด์ ํฐ๋ฏธ๋ ์ฐฝ์ ์๋๋ฅผ ์ ๋ ฅํ๋ค.
express (ํด๋๋ช ) (์ต์ )
ํด๋๋ช ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ํด๋น ์์น์ express ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธํ ํด์ฃผ๊ณ , ํด๋๋ช ์ ์ ๋ ฅํ๋ฉด ํด๋น ํด๋๋ช ์ด ์์ฑ๋๋ฉด์ ๊ทธ ๊ณณ์ express ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ค์ด์ค๋ค.
ํด๋๋ช ์ ์ ๋ ฅํ๋ค๋ฉด cd ํด๋๋ช ์ผ๋ก ์ด๋ ํ ์๋ ๋จ๊ณ๋ฅผ ์งํํ๋ฉด ๋๋ค.
๋ํ, express์ ์ต์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ํ ํ๋ฆฟ ์์ง์ ํ์ผ๋ช ๋ ์ง์ ํด์ค ์ ์๋ค.
๋ง์ฝ express ๋ง ์ ๋ ฅํ๋ค๋ฉด .jade ํ์ผ(pug ํ์ผ)์ด ์์ฑ๋๋ค. ์ ๋ ํ ํ๋ฆฟ ์์ง์ ejs๋ก ์ฌ์ฉํ ์์ ์ด๊ธฐ ๋๋ฌธ์ ์ต์ ์ผ๋ก —view=ejs๋ฅผ ๋ฃ์ด์คฌ์ต๋๋ค.
์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ ๊ฐ์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ ๋๋ค.
# ํจํค์ง ์ค์น ๋ช ๋ น์ด
npm install
ํจํค์ง๋ฅผ ์ค์นํด์ฃผ๊ธฐ ์ํด์ ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
ํจํค์ง๋ฅผ ์ค์นํ๊ฒ ๋๋ฉด node_modules์ package-lock.json์ด ์ค์น๋๋ค.
# sequelize์ mysql ์ค์นํ๊ธฐ
npm install sequelize mysql2
sequelize์ mysql์ ์ค์นํ๊ธฐ ์ํด์ ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
# ์ข ๋ ์ฝ๊ฒ sequelize์ ์ ๊ทผํ๊ธฐ ์ํด์ ์ค์นํ๋ค.
# -g(๊ธ๋ก๋ฒ ์ต์ )์ ์ด ์ด์ ๋ ์ ์ญ์ ์ผ๋ก ์ ๊ทผํ๊ธฐ ์ํด์์ด๋ค.
npm install -g sequelize-cli
์ํ๋ผ์ด์ฆ์ ๋ํด ์ฝ๊ฒ ์ ๊ทผํ๊ธฐ ์ํด์ sequelize-cli๋ ์ค์นํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ด๊ธฐํ๊น์ง ์งํํ๋ค.
# ์ด๊ธฐํํ๊ธฐ
sequelize init
์ด๊ธฐํ๋ฅผ ์งํํด์ฃผ๋ฉด models, migrations, seeders ํด๋๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ ์ ์ฃผ๊ด์ ์ธ ์๊ฐ์ด ๋ด๊ธด ๊ธ์ ๋๋ค.
์ด ๊ธ์ ๋ณด์ ๋ถ๋ค์๊ฒ ๋์์ด ๋๊ณ ์ ๊ธ์ ์ผ์ง๋ง ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์ ์ ์์ต๋๋ค.
๊ทธ ์ ์ํด ๋ถํ๋๋ฆฌ๋ฉฐ, ์ถ๊ฐํ์ผ๋ฉด ํ๋ ๋ถ๋ถ์ด๋ ์๋ชป๋ ๋ถ๋ถ์ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
๋๊ธ