Firestore 쿼리 사용 중 발생한 `The query requires an index.`

Daehyeon Yun·2024년 8월 7일

❓ Uncaught (in promise) FirebaseError: The query requires an index. (firestore 쿼리 사용 중 발생한 에러)

FirebaseError: The query requires an index. You can create it here: 
https://console.firebase.google.com/~~~

사용자 프로필 컴포넌트에 사용자 본인이 작성한 트윗만 firestore 에서 가져오도록 하는 쿼리를 작성중 발생한 에러.

// 에러가 발생한 쿼리
const tweetQuery = query(
 collection(database, "tweets"),
 where("userId", "==", user?.uid),
 orderBy("createdAt", "desc"),
 limit(TWEET_LIMIT)
);

Firestore 는 복합 쿼리(여러 조건을 포함하고 있는 쿼리)를 최적화하기 위해 인덱스 를 사용한다. 기본적으로 단일 필드에 대한 쿼리는 자동으로 처리되지만 위 코드와 같은 whereorderBy 등을 결합한 복합 쿼리 또는 여러 where 조건(”userId”, “==”, user?.uid)을 사용할 경우 별도의 인덱스를 사용해야하기 때문에 오류가 발생하였다.

💡 해결법

해당 오류가 발생하였으면 오류메세지에 특정 URL 이 포함되어 있다. 해당 URL로 접속하면 복합 쿼리 인덱스를 생성할 수 있는 페이지로 이동된다.

-> Cloud Firestore에 존재하는 색인 추가 팝업

해당 색인을 저장하면 아래와 같이 추가된다.

-> 색인 생성으로 만들어진 복합 쿼리 인덱스

오류 없이 정상적으로 출력되는 것을 확인할 수 있다.

🎉 해결!


profile
열심히 살아야지

0개의 댓글