Gorilla-Kim/Project

[MEMO APP] Back-end/ DB์—ฐ๊ฒฐ (1)

Kim_gorilla 2020. 3. 16. 16:04

 

๐Ÿ‘จ‍๐Ÿ’ป DB ์—ฐ๊ฒฐ (with MongoDB)

 

๐Ÿ“Œ ์ง€๋‚œ Routing์ž‘์—… ์š”์•ฝ

์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ ์šฐ๋ฆฌ๋Š” ๋ผ์šฐํŒ… ์ž‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด์„œ /api ๋ผ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” api ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋งˆ์น˜ ๊ณ„์ธต์ ์œผ๋กœ ๋ชจ๋“  ๊ฒฝ๋กœ๋“ค์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ ํ•ด๋‹นํ•˜๋Š” ๊ณ„์ธต๋“ค๋ผ๋ฆฌ ํด๋” ๋ฐ ํŒŒ์ผ๋“ค๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ๋ฐ์š”, ์ด๋ ‡๊ฒŒ ๊ฐœ๋ฐœ์„ํ•ด์•ผ ๋‚˜์ค‘์— ํŠน์ • ๊ฒฝ๋กœ์—๋Œ€ํ•œ ์ˆ˜์ •์ด๋‚˜ ์ฝ”๋“œ์‚ฝ์ž…์ด ํ•„์š”ํ• ๋•Œ ์‰ฝ๊ฒŒ ๊ทธ ์œ„์น˜๋ฅผ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์ด๋ ‡๊ฒŒ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š”๊ฒƒ์€ ํ•œ๊ณณ์— ๋ชฝ๋•… ๋•Œ๋ ค๋ฐ•์•„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹๋ณด๋‹ค ๊ฐ ๊ธฐ๋Šฅ๋“ค๊ฐ„์— ์˜์กด๋  ๊ฐ€๋Šฅ์„ฑ ๋˜ํ•œ ์ ์–ด์ง‘๋‹ˆ๋‹ค. 

(์ด ๋ถ€๋ถ„์€ ์‚ฌ์‹ค ๊ฐœ๋ฐœ์ž๊ฐ€ ์œ ์˜ํ•ด์„œ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ํ•œ๊ณณ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋„ ์˜์กด์„ฑ์€ ์—†์„ ์ˆ˜ ์žˆ์–ด์š”.)

 

๊ฒฐ๋ก ,

  • ์šฐ๋ฆฌ๋Š” api๊ด€๋ จ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
  • api๋Š” ๋ฒ„์ „๋ณ„๋กœ ๊ด€๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋ฒ„์ ผ๋ฒŒ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํด๋”๋„ ์ƒ์„ฑํ–ˆ๋‹ค.
  • ์•ž์œผ๋กœ ๊ฐ ๊ธฐ๋Šฅ๋ณ„ ํด๋”๋ฅผ v1.0 ํด๋”(๋ฒ„์ „1ํด๋”)์•ˆ์— ์ถ”๊ฐ€๋ฅผ ํ•  ์˜ˆ์ •์ด๋‹ค.

๐Ÿ“Œ DB ์—ฐ๊ฒฐํ•˜๊ธฐ

์ด ํฌ์ŠคํŒ…์€ ํ”„๋กœ์ ํŠธ ์—ฐ์Šต์„ ์œ„ํ•œ ํฌ์ŠคํŒ…์ด๊ธฐ ๋•Œ๋ฌธ์— DB๊ฐ€ ๋ฌด์—‡์ธ์ง€ MongoDB๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž์„ธํ•˜๊ฒŒ๋Š” ๋‹ค๋ฃจ์ง„ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ผ๋‹จ ์ €ํฌ๊ฐ€ ์‚ฌ์šฉํ•  DBMS(DataBaseManagementSystem)์€ MongoDB์ž…๋‹ˆ๋‹ค.

 

MongoDB๋Š” NoSQL์„ ์‚ฌ์šฉํ•˜๋Š” DB์˜ ์˜ˆ๋กœ ์œ ๋ช…ํ•˜์ฃ .

์‚ฌ์‹ค, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ NoSQL์„ ์™œ์‚ฌ์šฉํ•˜๋Š”์ง€ ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชฐ๋ž์—ˆ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐํƒ„์‚ฌ๋ฅผ ๋ช‡๋ฒˆ ๋‚ด๋ฑ‰์€์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์‹œ๊ฐ„์ด ๋œ๋‹ค๋ฉด, MongoDB์™€ ๊ด€๋ จ๋œ ํฌ์ŠคํŒ…๋•Œ ์ด์•ผ๊ธฐ๋ฅผ ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ DB๋Š” ๋นผ๋†“์„๋ž˜์•ผ ๋นผ๋†“์„์ˆ˜๊ฐ€ ์—†์ฃ !

์™œ๋ƒํ•˜๋ฉด, ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ์š”. ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์„œ๋ฒ„์•ฑ๊ณผ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ์ธ DB๋ฅผ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

 

๋ฐ”๋กœ Interface๋ฅผ ์ด์šฉํ•œ ์—ฐ๊ฒฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

DB๊ฐ€ ํŠน์ • ์•ฝ์†๋œ interface๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๊ฒ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ •ํ™•ํžˆ๋Š” DB๊ฐ€ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€๋Š” ์•Š๊ณ  ๊ทธ์‚ฌ์ด์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์„œ๋ฒ„์™€ DB๊ฐ€ ์˜์‚ฌ์†Œํ†ต(๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ)๋ฅผ ์ž˜ ํ• ์ˆ˜ ์žˆ๋„๋ก ๋ฒˆ์—ญ๊ฐ€๊ฐ€ ์กด์žฌํ•ด์š”. ๊ทธ ์นœ๊ตฌ๊ฐ€ ๋ฐ”๋กœ DBMS์ž…๋‹ˆ๋‹ค. 

 

๊ทธ๋ž˜์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ DBMS์™€ ์šฐ๋ฆฌ์˜ ์„œ๋ฒ„์•ฑ๊ณผ ์—ฐ๊ฒฐ์„ ํ• ๊บผ์—์š”. ์ด๊ฒƒ์„ DB connection์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ์ปค๋„ฅ์…˜์„ ๋งŒ๋“ค๊ธฐ์œ„ํ•ด์„œ๋Š” ์ปค๋„ฅ์…˜์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํŠน์ • ๋ชจ๋“ˆ์„ ๋ฐ›์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ชจ๋“ˆ์˜ ์ด๋ฆ„์€ ๋ฐ”๋กœ mongoose์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์ฝ˜์†”์— ์ณ์ฃผ์„ธ์š”.

yarn add mongoose

๋ฐฉ๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ์„ค์น˜ํ•œ๊ฒƒ์€ mongoDB์™€ ์šฐ๋ฆฌ์˜ ์•ฑ์ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•œ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์•„์ง MongoDB๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ด์•ผ๊ธฐ์ฃ . ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ mongoDB๋ฅผ ์„ค์น˜ํ•ด์•ผ๊ฒ ์ฃ ?

 

์„ค์น˜๋ฅผ์œ„ํ•ด์„œ mongoDB install center๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. 

(https://www.mongodb.com/download-center?)

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์˜ ์‚ฌ์ง„์„ ๋”ฐ๋ผ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ดํ›„๋ถ€ํ„ฐ ๋‹ค์šด๋กœ๋“œ๋œ ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ๊ณ„์† next๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ๋‹ค๊ฐ€. ์•„๋ž˜์˜ ํ™”๋ฉด์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ์˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ์ค๋‹ˆ๋‹ค.

1. ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ €๋ผ๋ฉด Complete๋ฅผ ๋ˆŒ๋Ÿฌ ์ž๋™์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

2. ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•˜๊ณ ํ”ˆ ์œ ์ €๋ผ๋ฉด Customํ•˜์—ฌ ์›ํ•˜๋Š” ํŒŒ์ผ๋งŒ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

 

์ดํ›„ ๊ณ„์† Next๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ๋‹ค์Œ์˜ ์‚ฌ์ง€์„ ๋งŒ๋‚˜๊ฒŒ๋˜๋Š”๋ฐ, ์ด๋•Œ ์›ํ™œํ•œ ๊ฐœ๋ฐœํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ Compass๋ฅผ ์„ค์น˜ํ•ด๋‘๋Š”๊ฒƒ์ด ์ข‹์Œ์œผ๋กœ ์ขŒ์ธก ์•„๋ž˜์˜ install mongodb compass ๋ถ€๋ถ„์„ ์ฒดํฌํ•ด์ค๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๋ชฝ๊ณ DB์„ค์น˜์˜ ๋์ž…๋‹ˆ๋‹ค. 

 

๋งŒ์•ฝ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด ๋‹ค์Œ์˜ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š”์ง€ ํ™•์ธํ›„ ์กฐ์น˜๋ฅผ ์ทจํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.


MongoDB ์„ค์น˜์˜ค๋ฅ˜

 

๋ฌธ์ œ1. CMD ์ฐฝ์—์„œ mongod๋ฅผ ์ณค์„๋•Œ ์ธ์‹์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

* ํ•ด๊ฒฐ1

  • C๋“œ๋ผ์ด๋ธŒ ์•ˆ์— Program Files ํด๋”์•ˆ์— MongoDBํด๋”๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์—†๋‹ค๋ฉด ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

* ํ•ด๊ฒฐ2

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€๋Š” [๋‚ด์ปดํ“จํ„ฐ]์šฐํด๋ฆญโžก[๊ณ ๊ธ‰์‹œ์Šคํ…œ์„ค์ •]โžก[ํ™˜๊ฒฝ๋ณ€์ˆ˜(N)]์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ํ›„ ํ•˜๋‹จ ์‹œ์Šคํ…œ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ ์ค‘์—์„œ PATH ๋ฅผ ํŽธ์ง‘ ์„ ํƒํ•œ๋‹ค์Œ ์•„๋ž˜์™€ ๊ฐ™์ด  MognoDB์„ค์น˜๊ฒฝ๋กœ\bin ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.