๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/NodeJS

[NodeJS] NodeJS, Express, Sequelize ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

by zlzzlzz2l 2021. 6. 22.
๋ฐ˜์‘ํ˜•

๐ŸŒฑ 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 ํด๋”๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์ €์˜ ์ฃผ๊ด€์ ์ธ ์ƒ๊ฐ์ด ๋‹ด๊ธด ๊ธ€์ž…๋‹ˆ๋‹ค.

์ด ๊ธ€์„ ๋ณด์‹  ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜๊ณ ์ž ๊ธ€์„ ์ผ์ง€๋งŒ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ๋งŽ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฌ๋ฉฐ, ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‚˜ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์€ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€