์ ์ ์๋ ์ผ์ฃผ์ผ์ด์๋ค.
์ผ๋จ ๋๋ ์ ๋ฒ์ฃผ๋ฅผ ๋ง์ง๋ง์ผ๋ก ํด์ฌ๋ฅผ ํ๊ณ
์ด์ด ์ข๊ฒ๋ ๋๋ฅผ ์์๋ด์ฃผ์๋ ๊ณณ์ ๋น ๋ฅด๊ฒ ๋ง๋ ์ด์ง์ ํ๊ฒ๋์๋ค.
๋๋ฌด ๋คํ์ธ ๊ฒ์ ์ด๋ฒ dndํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ด์ฌ์ด ๊ฐ ๊ธฐ์ ? ์ด๋ผ๊ณ ํด์ผ๋๋
์์ฆ ๊ด์ฌ์ด ๊ฐ๋ ๊ธฐ์ ์ ์ ๋ชฉํด์ ์ฌ์ฉํ๊ณ ์๋ค๊ธธ๋
ํ์ฌ์ผ ๋ฐ์๋ค๋ ํ๊ณ๋ก ๋์ค๋๋ฅผ ํ์ฃผํ ์ผ์ ์๊ฒ ๊ตฌ๋ ์ถ์๋ค.
ํ์ฌ์ ๊ธฐ์ ๋ฐ ๋ชจ๋์ nestjs, ts, typeorm ๋ฑ์ด๋ค.
ํ์ฌ dndํ๋ก์ ํธ๋ express, ts, typeorm์ธ๋ฐ ํ๋ ์์ํฌ๋ง ๋นผ๊ณ ๋์ผํ๋ค.
1. typeorm ๊ด๊ณ์ค์
๋ถ๋๋ฌ์ด ์ด์ผ๊ธฐ์ด์ง๋ง express์ sequelize orm์ ์ฌ์ฉํ์๋์๋ ๊ด๊ณ์ค์ ์ ์ ํ์ง ์์๋ค. ์ด์ ๋ ํ์ฌ์์ ์๊ตฌํ๋ ์๊ตฌ์ฌํญ์ด ๋๋ฌด ์์ฃผ๋ฐ๋๋ ์ํฉ์์ ํ ์ด๋ธ์ ์ง์ฐ๊ณ ๋ค์ ์์ฑํ๊ณ ๊ด๊ณ๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ๊น๋ค๋ก์์ ํน์ ๊ท์ฐฎ์์(์ด์ฐจํผ ์กฐ์ธ๋ฌธ ์ฐ๋ฉด๋๋๊น)์๋๋ฐ typeorm์ ๊ด๊ณ์ค์ ์ ์ฒ์๋ถํฐ ์ ํด์ฃผ๊ณ ๋ค์ด๊ฐ์ผํ๋ค. ์ํ๋ผ์ด์ฆ ์ฌ์ฉ์์๋ ๋๋นํด๋ก ์์ฃผ ๋ค์ด๊ฐ์ ๋ก์ฐ์ฟผ๋ฆฌ๋ฌธ๋ ์์ฃผ ์ฌ์ฉํ๋๋ฐ ํ์ ์ค์์ ์ผ๋ก ํ๋ ์ง์ง orm์ ์ฅ์ ์ด ๊ทน๋ช ํ๊ฒ ๋๊ปด์ก๋ค.
๊ด๊ณ๋ฅผ ์ค์ ํ ๋์ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ 1:1, 1:n, n:m ์ธ์ง๊ฐ ํท๊ฐ๋ฆฌ๋๋ฐ A->B ์ผ๋ A์ปฌ๋ผ 1๊ฐ๋ B์ปฌ๋ผ์ n๊ฐ์ ๊ฐ์ง์์๋๋, B->A์ผ๋ B์ปฌ๋ผ์ A์ n๊ฐ์ ๊ฐ์ ๊ฐ์ง์์๋๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๊ณ ๊ด๊ณ๋ฅผ ์ค์ ํด๋๊ฐ๋ฉด ๋๋ค. n:m์ ๊ด๊ณ์์๋ ํ ์ด๋ธ์ค์ ์ด๋ ๊ฐ๋ ์ด ํท๊ฐ๋ฆด์์๋๋ฐ n:m์ธ๊ฒฝ์ฐ 1:n๊ด๊ณ๊ฐ 2๊ฐ์๋ค๊ณ ์๊ฐ ํ๊ณ ๊ด๊ณํ ์ด๋ธ์ ์ค์ ํ๋ฉด ๋๋ค. ๋๋ ์ดํ๋ฒํ๊ฐ ์์ด ์ดํดํ๋ฉด์ ๊ด๊ณ์ค์ ์ ํ ์ ์์๋ค.
2. nestjs
์๋๋ expressํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์ ํ ๊น์ง ๋๋๋๋ฐ ํ์ฌ์์ nest๋ฅผ ์ตํ๊ณ ์์๊ณ dnd ์์ ๊ฒ์ํ์์ nest์ถ์ฒํ๋ ๊ธ์ด ์ฌ๋ผ์ค๋ฉด์ ์ค๊ตฌ์ค๊ตฌ์กฐ์ ํ๋ก์ ํธ์๋ nest๋ฅผ ๋์ ํด๋ณผ๊น์?๋ผ๋ ์ ์์ ๋จผ์ ํด์ฃผ์ จ๋ค. (๋ ์ฒ์ฌ ํ์์ ๋ง๋ฌ๋ค.) nest๋ฅผ ์ตํ์ง ํ๋ฃจ๋ฐ์ ๋์ง์์์ง๋ง ์ ๋ง ์ด๋ช ์ ์ด๊ฒ๋ ๋๋ ๊ทธ๋ ๊ณ ์ฒ์ฌ ๋ฐฑ์๋๋ถ๋ spring boot์ ๊ฒฝํ์ด ์์ด ํฌ๊ฒ ๊ฐ๋ ์ด ๋ณต์กํ๊ฑฐ๋ ์ดํด๊ฐ ๋์ง์๊ฑฐ๋ ์ธ๊ณ์ด ๋ณด๋๋ฏํ ๋๋์ ์๋์๋ค. ์คํ๋ ค express๋ฅผ ํ๋ฉด์ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ด ํด์๋๋ ๋๋๋ ๋ฐ์๋ค ๋! ๊ทธ๋ ๊ฒ nestjs ํ๋ ์์ํฌ๋ก ๊ฒฐ์ ํ๊ฒ๋์๋ค.
(์ฌ์ง์ด express๊ตฌ์กฐ๋ ์คํ๋ง์ ๋ฐฐ์ ๋ ๋๋ controller, service๋ก ๋น์ง๋์ค๋ก์ง์ ๋ถ๋ฆฌํด์ ์ฐ๊ณ dto๋ ์ฌ์ฉํ๊ณ ์์๋ค.. ์ธ์์ )
nestjs๋ฅผ ํ๋ง๋๋ก ํํํ์๋ฉด node๊ณ์ spring boot!
3. api ๋ช ์ธ์
nestjs์ ์ฅ์ ์ ์์ฃผ ๋ง์ง๋ง ๊ทธ์ค ํ๋๋ swagger ๋ชจ๋์ ํตํด ๋ฐ์ฝ๋ ์ดํฐ(ํน์ ์ด๋ ธํ ์ด์ )์ ๋ถ์ด๋ฉด ๋ฐ๋ก api๋ช ์ธ์๊ฐ ๋ง๋ค์ด ์ง๋ค๋ ๊ฒ์ด๋ค!! ์์ฒญ ํ๋ผ๋ฏธํฐ๋ ์๋ตํ์, ์์ฝ๋ฑ ์ฌ๋ฌ๊ฐ์ง api ๋ฌธ์๋ฅผ ๋ง๋ค ์ ์๋ค. ์ฌ์ค ์ด๋ ๊ฒ api๋ฌธ์๋ฅผ ์ด๋ค๊ณ ํด์ ์ฝ๋๊ฐ ๋ ์ข์์ง๊ฑฐ๋ ๊ฐ๊ฒฐํด์ง๋๊ฒ๋ ์๋๊ธดํ๋ฐ ์ด๋ฐ ๋ถ์์ ์ธ ์์ ๋ค์ด ์ต์ํด์ง๋ฉด ๋น ๋ฅด๊ฒ ํ๋ก ํธ์ ์ํต์ด ๊ฐ๋ฅํด์ ์ ๋ฌดํจ์จ์ด ๋์์ง๊ฒ์ด๋ค..! ์ด๋ฒ ๋์ค๋ ํ๋ก์ ํธ์์๋ ์ด๊ฒ์ ๋์ ํ๊ธฐ๋ก ํ๋ค!
์ด๊ฒ ์ด์ธ์๋ nest์ ์ฅ์ ์ ๋๋ฌด ๋ง๊ธด ํ๋ฐ express๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์์ ์ฅ์์ nest์ ๋น๊ตํ์ฌ ๋ธ๋ก๊ทธ ๊ธ์ ์์ฑํด๋ณด์์ผ๊ฒ ๋ค.
typeORM๋ ์ฅ์ ์ด ์๋๋ฐ ์ด ๋ถ๋ถ๋ ์กฐ๋ง๊ฐ ์ ๋ฆฌํด์ ์ฌ๋ ค์ผ์ง.
๋์ค๋ ํ๋ก์ ํธ๋ ์ด 8์ฃผ์ฐจ์ธ๋ฐ 4์ฃผ์ฐจ๋์ ์ค๊ฐ์ ๊ฒ์ด ์๋ค.
์ฌ์ค ๊ฐ๋ฐ๋ง 8์ฃผ๋์ ๊ฐ๋ฐ๋ง ํ๋ฉด ๊ทธ๋ฅ ์ผ ํ๋ฉด ๋๋ค.
ํ์ง๋ง ๋์ค๋ ํ๋ก์ ํธ์ ์ฅ์ ์ ํ์ ์ค๋ฌด์์ ์ ํ ์์๋ ๊ธฐํ์ฐธ์ฌ, ๋ธ๋๋ฉ์ฐธ์ฌ, ์๋ก์ด ๊ธฐ์ ์ต๋ํ์ฌ ๋์ ํ๊ธฐ, ๊ท์ฐฎ๋ค๊ณ git branch ์ด๋ฆ์ผ๋ก ๋ฐ์ ๊ทธ๋ฅ ํธ์ํด๋ฒ๋ฆฌ์ง์๊ณ ์ ํํ๊ฒ git์ ๋ต๊ณผ ์ฝ๋ฉ์ปจ๋ฒค์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ ๋ฑ ๊ฐ๋ฐ ์ด์ธ์ ํจ๊ป ํ์ ํ ์ ์๋ ์ฐธ์ฌ์ ๊ธฐํ๋ค์ด ๋ง์ด ์๋ค.
๋ํ ํ์์ ์ฌ๋์ ๋ฌ๋ฟ๋ฐ๊ณ ์ด์จ๋ฐ๋ ์ฅ์ ๋ ์๋ค.
์กฐ์ฅ์ด ๋๋ฉด ํ๋ ์ ํ ์ด์ ๋ฐํ๋ฅ๋ ฅ๋ ๊ธฐ๋ฅผ์๊ฐ ์๋ค..! (5959 ์ฐ๋ฆฌ๋ฆฌ๋ ํ์ดํ )
๊ฐ ํํธ๋ณ๋ก ๋ค๋ค ๋๋ฌด ๊ณ ์์ค์ด๊ณ ๋ฐฑ์๋๋ api๋ช ์ธ์๋ง ์ ํด์ง๋ฉด ๋ฐ๋ก ๋ง๋ค์์๋๋ก ์ ํ ์ด ์๋ฃ๋์๋ค!
ํ๋ก์ ํธ์์ํ์ง 4์ฃผ๋ง์ ์ด์ ์ผ ์ง์ง ์์์ด๋ค!
์์ฆ ์ง์ง ๊ฐ๋ฐ์์ฒ๋ผ ์ฃผ๋ง๋์์ด ๊ฐ๋ฐ ๋น์ทํ๊ฑธ ํ๊ณ ์๋๋ฐ ์ค๋ ฅ๋ ํจ๊ป ์ฅ์ฅ ์ฌ๋์ผ๋ฉด ์ข๊ฒ ๋ค.
์ค๋ ํ๋ฃจ๋ ๋ฟ๋ฏํ๊ฒ ๊ฐ๋ฐ์ ํ๋ค๋ ๊ฒ์ ๊ฐ์ฌํ๋ฉฐ ๊ตฌ๋นฐ์ด๋ค..!
'node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DND 5๊ธฐ 6์ฃผ์ฐจ - api์ ์ ๋ฐ ํ๊ณ (0) | 2021.08.08 |
---|---|
DND 5๊ธฐ 5์ฃผ์ฐจ - api์ ์ (0) | 2021.07.31 |
DND 5๊ธฐ 3์ฃผ์ฐจ - ๋ฐฑ์๋ ์ ๊ฒ (0) | 2021.07.16 |
DND 5๊ธฐ 2์ฃผ์ฐจ - ์ธ๋ถ ๊ธฐ์ ์คํ & ์ํคํ ์ณ ์ค๊ณ๋ (3) | 2021.07.12 |
DND 5๊ธฐ 1์ฃผ์ฐจ - ์์ํ๊ธฐ (0) | 2021.06.28 |