Conditional Destructuring Assignment
About
์ ํํ ๋ช ์นญ์ ๋ชฐ๋ผ์ Conditional Destructuring Assignment๋ผ๊ณ ์ด๋ฆ ๋ถ์ด๋๋ก ํ๊ฒ ๋ค.
JavaScript์ MongoDB Official Driver๋ฅผ ์ธ ๋, optionalํ ๊ฐ์ ๋๊ธธ ๋ ์ฌ์ฉํ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋๊น, ๊ฐ์ด ์ ๋ฌ๋๋ฉด(๋๋ truthyํ๋ฉด) ์ฌ์ฉํ๊ณ , ๊ฐ์ด ์ ๋ฌ๋์ง ์์ผ๋ฉด(๋๋ falsyํ๋ฉด) ์ฌ์ฉํ์ง ์์ ๋ ์ธ ์ ์๋ค.
Code
Post
๋ผ๋ ๊ฒ์๊ธ์ ์ํ Mongo ์ปฌ๋ ์
(collection)์ด ์๊ณ , ํด๋น ์ปฌ๋ ์
์๋ ์์ด๋ _id
, ์์ฑ์ user
, ๊ฒ์๊ธ ํ์
type
, ์ญ์ ์๊ฐ deletedAt
๋ฑ์ ํ๋(fields)๋ค์ด ์๋ค๊ณ ๊ฐ์ ํ์. Post
์ปฌ๋ ์
์์ ๋ํ๋จผํธ(document)๋ฅผ ํํฐ๋งํด ๋ฐฐ์ด(Post[]
)๋ก ๋ฐ์์ค๋ repository ํจ์์ด๋ค.
๊ฐ ๋งค๊ฐ๋ณ์๋ ?
๋ฅผ ๋ถ์ฌ optionalํ๊ฒ ํ์๋ค. ๊ฐ์ด ์ ๋ฌ๋๋ฉด ๊ฐ์ด ๋ค์ด๊ฐ ๊ฒ์ด๊ณ , ์ ๋ฌ๋์ง ์์ผ๋ฉด undefined
๊ฐ ๋ ๊ฒ์ด๋ค.
์ด ๋ฌธ๋ฒ์ ์ดํดํ๊ธฐ ์ํด์๋ ๊ตฌ์กฐ ๋ถํด (Destructuring Assignment)์ ๋ํ ์ดํด๊ฐ ์ ํ๋์ด์ผ ํ๋ค. Destructuing Assignment ์ฐธ๊ณ .
user์ ๊ฐ์ด ์ ๋ฌ๋๋ฉด
user && { user }
์์user
๊ฐ truthyํ๊ฒ ๋๊ณ ,{ user }
๊ฐ ๋ฐํ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ตฌ์กฐ ๋ถํด์ ์ํด...{ user }
๊ฐ ๋๊ณ , ๊ฒฐ๊ตญuser
๊ฐ ๋๋ค. ์ ๋ฌ๋์ง ์์ผ๋ฉด falsyํ๊ฒ ๋์ด์undefined
๊ฐ ๋๊ณ , ์๋ฌด๋ฐ ๊ฐ๋ ์๋ค์ด๊ฐ์ ์ ์ด์user
์ ์ ๋ฃ์ ๊ฒ๊ณผ ๊ฐ๊ฒ ๋๋ค.postType
๋ ๋น์ทํ๋ฐ ์กฐ๊ธ ๋ค๋ฅด๋ค. ํจ์์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์postType
์ธ๋ฐ ์ค์ DB ํ๋๋ช ์type
์ด๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ๋ฅ ์์์ฒ๋ผ key๋ฅผtype
์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.deleted
๋postType
๊ณผ ๋น์ทํ๋ค.$exists
,$ne
ํํฐ๋ง์ ์ฌ์ฉํ ์์ฉ ๋ฒ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
Conclusion
๊ฐ์ธ์ ์ผ๋ก๋ ๋งค์ฐ ์ ์ฉํ๋ฐ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๋ค๊ณ ๋๋๋ค. ์๊น์๊ฐ ์กฐ๊ธ ํน์ดํด์ ๊ธฐ์ตํ๊ธฐ ์ด๋ ค์ธ ์ ์๋๋ฐ, ๋ช ๋ฒ ๋ณด๊ณ ๋๋ฉด ์๋ฆฌ๋ฅผ ์ดํดํ๊ฒ ๋์ด์ ์์ ๋กญ๊ฒ ์ธ ์ ์๊ฒ ๋๋ค.
Last updated