Skip to main content
del은 ID λ°°μ—΄λ‘œ μ—¬λŸ¬ λ ˆμ½”λ“œλ₯Ό ν•œ λ²ˆμ— μ‚­μ œν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. νŠΈλžœμž­μ…˜ λ‚΄μ—μ„œ μ•ˆμ „ν•˜κ²Œ μ‹€ν–‰λ˜λ©°, 기본적으둜 κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€.
del은 BaseModelClass에 μ •μ˜λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Entityλ₯Ό μƒμ„±ν•˜λ©΄ Syncerκ°€ 각 Model ν΄λž˜μŠ€μ— μžλ™μœΌλ‘œ μƒμ„±ν•˜λŠ” ν‘œμ€€ νŒ¨ν„΄μž…λ‹ˆλ‹€.

νƒ€μž… μ‹œκ·Έλ‹ˆμ²˜

μžλ™ 생성 μ½”λ“œ

SonamuλŠ” Entityλ₯Ό 기반으둜 λ‹€μŒ μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€:
λ‚΄λΆ€ λ™μž‘:
  1. getPuri(β€œw”): BaseModelClass λ©”μ„œλ“œλ‘œ μ“°κΈ°μš© Puri νšλ“
  2. transaction(): νŠΈλžœμž­μ…˜ μ‹œμž‘
  3. table().whereIn().delete(): Knex λ©”μ„œλ“œλ‘œ μ‚­μ œ μ‹€ν–‰
  4. ids.length λ°˜ν™˜: μ‚­μ œ μš”μ²­ν•œ ID 개수 λ°˜ν™˜

λ§€κ°œλ³€μˆ˜

ids

μ‚­μ œν•  λ ˆμ½”λ“œμ˜ ID λ°°μ—΄μž…λ‹ˆλ‹€. νƒ€μž…: number[]

λ°˜ν™˜κ°’

νƒ€μž…: Promise<number> μ „λ‹¬ν•œ ID λ°°μ—΄μ˜ 길이(ids.length)λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. DBμ—μ„œ μ‹€μ œλ‘œ μ‚­μ œλœ ν–‰ μˆ˜κ°€ μ•„λ‹ˆλΌ, μ‚­μ œλ₯Ό μš”μ²­ν•œ ID의 κ°œμˆ˜μž…λ‹ˆλ‹€.
λ°˜ν™˜κ°’μ€ DBμ—μ„œ μ‹€μ œλ‘œ μ‚­μ œλœ ν–‰ μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” IDκ°€ ν¬ν•¨λ˜μ–΄ μžˆμ–΄λ„ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠμœΌλ©°, λ°˜ν™˜κ°’μ€ 항상 ids.lengthμž…λ‹ˆλ‹€.

κΈ°λ³Έ μ‚¬μš©λ²•

단일 λ ˆμ½”λ“œ μ‚­μ œ

μ—¬λŸ¬ λ ˆμ½”λ“œ μ‚­μ œ

쑰건뢀 μ‚­μ œ

νŠΈλžœμž­μ…˜

del은 μžλ™μœΌλ‘œ νŠΈλžœμž­μ…˜ λ‚΄μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

@transactionalκ³Ό ν•¨κ»˜

κΆŒν•œ 확인

기본적으둜 del은 κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

본인 데이터 μ‚­μ œ

μ‹€μ „ μ˜ˆμ‹œ

APIμ—μ„œ μ‚¬μš©

μžλ™ μƒμ„±λœ del API

ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ

React (TanStack Query)

μ™Έλž˜ ν‚€ μ œμ•½μ‘°κ±΄

CASCADE μ„€μ •

RESTRICT μ„€μ •

μˆ˜λ™ 처리

μ‚­μ œ 확인

쑴재 μ—¬λΆ€ 확인

μ‚­μ œ ν›„ 확인

μ„±λŠ₯ μ΅œμ ν™”

배치 μ‚­μ œ

λŒ€λŸ‰ μ‚­μ œ μ‹œ 배치둜 λ‚˜λˆ μ„œ μ²˜λ¦¬ν•˜μ„Έμš”.

인덱슀 ν™œμš©

자주 μ‚­μ œν•˜λŠ” μ™Έλž˜ 킀에 인덱슀λ₯Ό μΆ”κ°€ν•˜μ„Έμš”.

μ£Όμ˜μ‚¬ν•­

1. λ°°μ—΄λ‘œ 전달

del은 λ°˜λ“œμ‹œ 배열을 λ°›μŠ΅λ‹ˆλ‹€.

2. λ°˜ν™˜κ°’μ€ ids.length

3. CASCADE 주의

CASCADE 섀정이 있으면 μ˜λ„μΉ˜ μ•Šμ€ λ°μ΄ν„°κΉŒμ§€ μ‚­μ œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

4. νŠΈλžœμž­μ…˜ ꢌμž₯

κ΄€λ ¨λœ μ—¬λŸ¬ ν…Œμ΄λΈ”μ„ μ‚­μ œν•  λ•ŒλŠ” νŠΈλžœμž­μ…˜μ„ μ‚¬μš©ν•˜μ„Έμš”.

5. κΆŒν•œ 확인

κΈ°λ³Έ guards: ["admin"] 섀정을 λ³€κ²½ν•  λ•ŒλŠ” μ‹ μ€‘ν•˜μ„Έμš”.

μ†Œν”„νŠΈ μ‚­μ œ vs ν•˜λ“œ μ‚­μ œ

ν•˜λ“œ μ‚­μ œ (del)

μž₯점:
  • λ””μŠ€ν¬ 곡간 μ ˆμ•½
  • λ‹¨μˆœν•œ ꡬ쑰
단점:
  • 볡ꡬ λΆˆκ°€λŠ₯
  • νžˆμŠ€ν† λ¦¬ 손싀

μ†Œν”„νŠΈ μ‚­μ œ (save)

μž₯점:
  • 볡ꡬ κ°€λŠ₯
  • νžˆμŠ€ν† λ¦¬ μœ μ§€
  • 감사 좔적
단점:
  • λ””μŠ€ν¬ 곡간 증가
  • 쿼리 λ³΅μž‘λ„ 증가

λ‹€μŒ 단계

save

λ ˆμ½”λ“œ μ €μž₯ 및 μˆ˜μ •

findMany

μ‚­μ œν•  λ ˆμ½”λ“œ μ‘°νšŒν•˜κΈ°

@transactional

νŠΈλžœμž­μ…˜μœΌλ‘œ μ•ˆμ „ν•˜κ²Œ μ‚­μ œν•˜κΈ°

μ™Έλž˜ ν‚€

μ™Έλž˜ ν‚€ μ œμ•½μ‘°κ±΄ μ„€μ •