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