๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

[Node.js] sequelize (2023.07.10) ๋ณธ๋ฌธ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Node.js] sequelize (2023.07.10)

Shinjio 2023. 7. 10. 12:00

sequelize

Node.js์˜ ๋Œ€ํ‘œ์ ์ธ ORM

Sequelize๋Š” mysql, postgreSQL, mariaDB ๋“ฑ ๋งŽ์€ RDBMS๋ฅผ ์ง€์›ํ•˜๊ณ  promises ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ ๋กœ์ง์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

 

ORM(Object-Relational Mapping) 

๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ™œ์šฉํ•˜์—ฌ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDB)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 

 

์‚ฌ์šฉ๋ฒ•

1.  sequelize ์„ค์น˜

npm install sequelize

 

2. sequelize-cli ์„ค์น˜ 

 - ํด๋” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ 

npm install sequelize-cli

 

3. mysql2 ์„ค์น˜

npm install mysql2

 

4. ์ดˆ๊ธฐํ™”

npx sequelize init

 

ํด๋” ๊ตฌ์กฐ

1. config 

 - DB์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ 

 - dev(๊ฐœ๋ฐœ์šฉ๋„), test(ํ…Œ์ŠคํŠธ์šฉ๋„), product(๋ฐฐํฌ์šฉ๋„)๋กœ ๊ตฌ๋ถ„ 

 

2. migration

 - DB๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ธฐ๋ก์— ๋Œ€ํ•œ ํŒŒ์ผ์„ ๋ณด๊ด€

 - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ณผ์ •๋“ค์„ ์ถ”์ ํ•ด๋‚˜๊ฐ€๋Š” ์ •๋ณด

 - ์ด์ „ ์„ค์ •์œผ๋กœ ๋˜๋Œ๋ฆด ๋•Œ ์‚ฌ์šฉ 

 

3. models 

 - ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ฐ์ฒด ์ •์˜

 

4. seeders 

 - ํ…Œ์ด๋ธ”์— ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

์ƒ์„ฑ๋œ ํŒŒ์ผ ๋‚ด๋ถ€์— ์ฝ”๋“œ ์ž‘์„ฑํ•˜์—ฌ seed ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

 

์ฝ”๋“œ ์ž‘์„ฑ ํ›„ ์‹คํ–‰ํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ๊ฐ’ ์ €์žฅ

 

๊ธฐํƒ€

json ๋ฐ์ดํ„ฐ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ

$ npm install body-parser

 

์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ˜น์€ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•  ๋•Œ๋Š” ORM์œผ๋กœ๋งŒ์€ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์›€