๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+130] Final Project : 10์ผ์ฐจ mongoose '$' update operator

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 2. 26.

 

 

D+130

-  Final Project : 10์ผ์ฐจ -

( ๋œป๋ฐ–์— ์ตœ๊ณ ๋‚œ์ด๋„ )

 


 

 

์˜ค๋Š˜์€ ์–ด์ œ ์ €๋…์— ๋Œ€ํ•œ ๊ธฐ๋ก๋ถ€ํ„ฐ ํ•˜์ž๋ฉด ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์Šค์ผ€์ค„์„ ์ˆ˜์ •ํ•˜๋Š” API์™€

์ƒˆ๋กœ ์ž‘์„ฑํ•œ ์Šค์ผ€์ค„์„ ์ €์žฅํ•˜๋Š” API๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋Š”๋ฐ

์ด๋•Œ ์Šค์ผ€์ค„์„ ์ˆ˜์ •ํ•˜๋Š” API๋ฅผ ์ฒ˜์Œ์—๋Š” PATCH๋กœ ์„ค์ •์„ ํ•ด์คฌ์—ˆ๋Š”๋ฐ

์Šค์ผ€์ค„์—์„œ ๋ฐ›์•„์˜ค๋Š” ์ •๋ณด์˜ ์–‘๊ณผ ์ข…๋ฅ˜๊ฐ€ ๋„ˆ๋ฌด ๋‹ค์–‘ํ•˜๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ผ์ผํžˆ ์ฐพ๋Š”๋ฐ ๋” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์•„์„œ

ํŒ€์žฅ๋‹˜๊ณผ ์ƒ์˜ ๋์— PATCH์—์„œ ๊ทธ๋ƒฅ ์ „์ฒด์ ์œผ๋กœ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” PUT์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

 

์ƒˆ๋กœ์šด ์Šค์ผ€์ค„์„ ์ €์žฅํ•˜๋Š” API๋Š” ์ผ๋‹จ ์™„์„ฑํ•˜๊ธฐ๋Š” ํ–ˆ์œผ๋‚˜

ํ”„๋ก ํŠธ์—”๋“œ ๋ถ„๋“ค๊ณผ ์–ด๋–ป๊ฒŒ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ์ง€์— ๋Œ€ํ•œ ์ƒ์˜๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ํ•˜์ง€ ์•Š์•„์„œ

ํ•ด๋‹น API๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๋Š” ํ–ˆ์œผ๋‚˜ ํ”„๋ก ํŠธ์—”๋“œ ๋ถ„๋“ค์ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜์‹  ์ดํ›„์—

๋‹ค์‹œ ์ƒ์˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ์ด์ œ๋ถ€ํ„ฐ ๋œป๋ฐ–์— ์ตœ๊ณ ๋‚œ์ด๋„๋ฅผ ์ž๋ž‘ํ•˜๋Š” API๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜๋Š”๋ฐ

๋ฐ”๋กœ ์ข‹์•„์š”/์‹ซ์–ด์š” API์ด๋‹ค.

 

์‚ฌ์‹ค ์ด๊ฑฐ๋Š” ์ฒ˜์Œ์— ๋‹จ์ˆœํžˆ ์ข‹์•„์š” ์‹ซ์–ด์š”์— ๋Œ€ํ•œ ์ˆซ์ž๋งŒ ๋ฐ›์œผ๋ฉด ๋˜๊ฒ ๋‹ค๋กœ ์ƒ๊ฐํ•ด์„œ

ํฐ ์–ด๋ ค์›€์ด ์—†์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ํ˜„์žฌ๊นŒ์ง€ ๊ตฌํ˜„ํ•œ ๊ฒƒ๋“ค์ค‘์— ์ œ์ผ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค.

 

์ผ๋‹จ ์ด API๋Š” ํŒ€์žฅ๋‹˜์ด ์ž‘์„ฑํ•˜์‹œ๋˜ API๋กœ

์ด์ „์— ์ˆซ์ž๋กœ ๋ฐ›์•˜๋˜ ์ข‹์•„์š”/์‹ซ์–ด์š”๋ฅผ ๋ˆ„๊ตฐ๊ฐ€ ์ค‘๋ณต์œผ๋กœ ๋งŽ์ด ๋ˆ„๋ฅด๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—

๋ˆ„๊ฐ€ ๋ˆŒ๋ €๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋„ ๋„ฃ์–ด์•ผ ํ• ๊ฒƒ ๊ฐ™์œผ๋‹ˆ

๋ฐฐ์—ด์•ˆ์— ๊ฐ์ฒดํ˜•์‹์œผ๋กœ ๋„ฃ์–ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์ „๋‹ฌ ๋ฐ›์€ ์ƒํƒœ๋ผ

์–ด๋Š์ •๋„๋Š” ์ธ์ง€ํ•œ ์ƒํƒœ์˜€๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š” ๋ฐฐ์—ด์•ˆ์— ๊ธฐ์กด์— ์žˆ๋Š” ๊ฐ’์— ์ถ”๊ฐ€๋กœ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•๊ณผ

๋งŒ์•ฝ ๊ฐ‘์ž๊ธฐ ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋ €๋˜ ์‚ฌ๋žŒ์ด ์‹ซ์–ด์š”๋ฅผ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ ๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋˜์–ด์•ผํ•˜๋Š” ์ ,

๊ทธ๋ฆฌ๊ณ  ์ข‹์•„์š”๋‚˜ ์‹ซ์–ด์š”๋ฅผ ๋ˆ„๋ฅธ ์‚ฌ๋žŒ์ด ์ทจ์†Œํ–ˆ์„ ๊ฒฝ์šฐ์— ์•ˆ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์˜ˆ ์‚ญ์ œ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„

๊ตฌํ˜„ํ•œ๋‹ค๋Š”๊ฒŒ ์ฒ˜์Œ์ธ ์šฐ๋ฆฌ์—๊ฒ ์ƒ๋‹นํžˆ ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค.

 

๊ทธ๋ž˜์„œ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ๊ฑด ๊ฐ™์ด ํ•ด๊ฒฐํ•ด ๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

 

 

๊ทธ์ „์— ์šฐ๋ฆฌ๊ฐ€ ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผํ•  ๊ฒƒ์€ bestWorst์•ˆ์— ์žˆ๋Š” userInfo๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์•„๋‚ด๋ƒ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

๋ฐฐ์—ด์•ˆ์— ์žˆ๋Š” ๊ฐ์ฒด ์ค‘์—์„œ ๋”ฑ ํ•ด๋‹น userInfo๋ฅผ ๊ฐ€์ง„ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋‹ค๊ฐ€

์ด๋Ÿฐ์‹์œผ๋กœ ๋งŒ์•ฝ "ํ•„๋“œ.ํ‚ค๊ฐ’" ํ˜•์‹์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

 

์˜ˆ๋กœ๋“ค๋ฉด bestWorst์˜ userInfo๊ฐ€ "abcd"์ธ ๊ฐ’์„ ์ฐพ๊ณ  ์‹ถ๋‹ค๋ฉด

"bestWorst.userInfo" = "abcd"

์ด์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

๋˜ํ•œ update๋ฅผ ํ• ๋•Œ์—๋Š” ๋‹จ์ˆœํžˆ ์ (.)๋งŒ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

".$."๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด ํžŒํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

 

์ผ๋‹จ์€ ์ด๋ฏธ ์ข‹์•„์š”์™€ ์‹ซ์–ด์š”๋ฅผ ๋ˆ„๋ฅธ ๊ธฐ๋ก์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ์—

๊ธฐ๋ก์ด ์—†์„ ๊ฒฝ์šฐ์—” ์ƒˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

์ด๋•Œ ๊ธฐ์กด์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ $push๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ ๋ˆŒ๋ €๋˜ ์‚ฌ๋žŒ์ธ๋ฐ ๊ฐ‘์ž๊ธฐ ๋งˆ์Œ์ด ๋ฐ”๋€Œ์–ด ์ข‹์•„์š”์—์„œ ์‹ซ์–ด์š”๋ฅผ ๋ˆ„๋ฅธ๋‹ค๊ฑฐ๋‚˜

์•„์˜ˆ ๊ฐ’์„ ์ทจ์†Œํ•ด ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด์„œ

$set์„ ์‚ฌ์šฉํ•ด ๊ธฐ์กด์— ์žˆ๋Š” ๊ฐ’์— ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด ์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ด๋•Œ ์ข‹์•„์š”์™€ ์‹ซ์–ด์š”๋ฅผ ๋ชจ๋‘ ์ทจ์†Œํ•œ ์‚ฌ๋žŒ๊ฐ™์€ ๊ฒฝ์šฐ์—” ๋”์ด์ƒ ํ•ด๋‹น ์Šค์ผ€์ค„๊ณผ ๊ด€๊ณ„๊ฐ€ ์—†์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—

bestWorstํ•„๋“œ์•ˆ์— ๊ฐ’์„ ์•„์˜ˆ ์ œ๊ฑฐํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด์„œ 

bestWorst์—์„œ best์™€ worst๊ฐ€ ๋ชจ๋‘ 0์ธ ๊ฐ’์„ ์ฐพ์•„ $pull์„ ์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

 

์ด๊ฑธ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ผ๋งˆ๋‚˜ ๊ฒ€์ƒ‰์„ ๋งŽ์ด ํ–ˆ๋˜์ง€....

 

์‹œ๊ฐ„๋„ ์ข€ ๊ฑธ๋ฆฌ๊ธฐ๋Š” ํ–ˆ๋Š”๋ฐ ๊ทธ๋ž˜๋„ ์™„์ „ ๋ฟŒ๋“ฏ...ใ…Žใ…Žใ…Žใ…Ž

 

์ข‹์•„์š”/์‹ซ์–ด์š” API๋ฅผ ๊ตฌํ˜„ํ•œ ์ดํ›„์—

๋‚ด ํšŒ์› ์ •๋ณด๋ฅผ ์ฐพ์•„๋‚ด๋Š” myInformation API๋ฅผ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•˜์˜€๋‹ค.

( GET์ด๋ผ์„œ ํฐ ๋ฌธ์ œ ์—†์ด ๋ฐ”๋กœ ํ•ด๊ฒฐ ๋š๋”ฑ! )

 

๊ทธ๋ฆฌ๊ณ  ํŒ€์žฅ๋‹˜๊ณผ ๊ฐ์ž ์ฃผ๋ง๊นŒ์ง€ ๋งก์€ API๋ฅผ ๋‹ค ํ•ด์˜ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

 

์ผ๋‹จ ๋‚˜๋Š” ํšŒ์›ํƒˆํ‡ด API์™€ ๋กœ๊ทธ์•„์›ƒ API๋ฅผ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ด๋‹ค.

 

์ด๋ฒˆ ์ฃผ๋ง๋„ ํž˜๋‚ด์ž ๋น ์ƒค!

 

 


 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€