Back-End/Firebase

[React/Cloud Firestore] delete document using where clause (query문으로 조건에 부합하는 문서 delete하는 법)

koh1018 2022. 1. 19. 02:11
반응형

 

공식문서를 보면 위와 같이 불친절하게 쿼리문을 사용하지 않고 문서의 ID를 이용해 삭제하는 코드를 소개한다.

하지만 문서의 ID를 사용하지 않고 쿼리문을 사용해 조건에 맞는 문서를 찾은 다음, 그 문서를 삭제하고 싶을 수도 있을 것이다.

 

그런 경우 아래의 코드를 사용하면 된다.

const deleteExample = async () => {
    const q = query(citiesRef, where("capital", "==", true));
    const data = await getDocs(q);
    if (data.docs.length !== 0) {
      await deleteDoc(data.docs[0].ref);
    }
  }

예시 코드이다. 원하는 조건에 맞추어 query를 짜주고 getDocs로 데이터를 받아온다.

필자의 경우에는 조건에 부합하는 데이터가 항상 한개라서 data.docs[0]으로 했지만 만약 여러개라면 data.docs.map()으로 map함수를 이용해 처리해주면 될 것이다.

 

중요한 부분은 .ref인데 deleteDoc()함수는 reference를 필요로 하기 때문에 .ref를 통해 reference를 넘겨줘야한다.

 

위 코드를 참고해 코드를 짜면 조건에 맞는 문서를 잘 지울 수 있을 것이다.

반응형