[Firebase] Cloud Firestore - CRUD - 2

박지훈·2023년 11월 22일

Firebase

목록 보기
3/6
post-thumbnail

Cloud Firestore - CRUD

데이터 삭제

문서 삭제

문서를 삭제하려면 delete() 메서드를 사용.

db.collection("cities").doc("DC").delete().then(
      (doc) => print("Document deleted"),
      onError: (e) => print("Error updating document $e"),
    );

경고: 문서를 삭제해도 하위 컬렉션은 삭제되지 않는다.

문서를 삭제하는 경우 Cloud Firestore는 하위 컬렉션 내 문서를 자동으로 삭제하지 않는다. 따라서 참조를 통해 하위 컬렉션 문서에 액세스할 수 있다.
예를 들어 /mycoll/mydoc에서 상위 문서를 삭제했더라도 /mycoll/mydoc/mysubcoll/mysubdoc 경로에 있는 문서에 액세스할 수 있다.
존재하지 않는 상위 문서는 콘솔에 표시되지만 쿼리나 스냅샷에는 표시되지 않는다.
문서를 삭제할 때 하위 컬렉션의 문서까지 삭제하려면 수동으로 삭제해야 한다.

필드 삭제

문서에서 특정 필드를 삭제하려면 FieldValue.delete() 메서드를 사용.

final docRef = db.collection("cities").doc("BJ");

// Remove the 'capital' field from the document
final updates = <String, dynamic>{
  "capital": FieldValue.delete(),
};

docRef.update(updates);

컬렉션 삭제

Cloud Firestore에서 전체 컬렉션 또는 하위 컬렉션을 삭제하려면 컬렉션 또는 하위 컬렉션에 포함된 모든 문서를 검색(읽기)하여 삭제한다. 이 프로세스에는 읽기 및 삭제 비용이 모두 발생한다. 컬렉션의 규모가 큰 경우 문서를 조금씩 나누어 삭제하면 메모리 부족 오류를 방지할 수 있다. 전체 컬렉션 또는 하위 컬렉션이 삭제될 때까지 이 과정을 반복.

컬렉션을 삭제하려면 제한되지 않은 개별 삭제 요청 수를 조정해야 한다. 전체 컬렉션은 신뢰할 수 있는 서버 환경에서만 삭제해야한다. 모바일 또는 웹 클라이언트에서도 컬렉션을 삭제할 수 있지만, 이 경우 보안 및 성능에 부정적인 영향을 미친다.

클라이언트에서는 되도록 컬렉션 삭제를 하지말자. 예시 코드또한 없다.


👀 Reference

profile
Flutter 개발자가 되어보자!

0개의 댓글