IT

[Flutter 앱 개발하기] Firestore에 복수 field로 필터링 할 때 에러 해결

검색일기 2023. 1. 16. 12:52
728x90

아래와 같이 Firestore의 where 절을 이용해 쿼리를 날릴 때,

응답이 없을 때가 있다.

 

QuerySnapshot querySnapshot = await notificationReference
        .where("userId", isEqualTo: authClient.currentUser!.uid)
        .where("isValid", isEqualTo: false)
        .where("createdAt",
            isGreaterThanOrEqualTo: Timestamp.fromDate(
                DateTime.now().subtract(const Duration(days: 1))))
        .get();
보통 이렇게 firestore 응답이 없으면 exception인 경우가 많은데,
이 경우에는 index가 없어서 그렇다
 
디버거를 켜서 확인해 보면 다음과 같은 안내가 뜬다.
 
 
예외가 발생했습니다.
FirebaseException ([cloud_firestore/failed-precondition] The query requires an index. You can create it here: 
LINK TO FIREBASE CONSOLE
 
해당 링크로 가서 create index로 들어간 후 쿼리에 사용되는 필드로 구성되는 인덱스를 새로 만들면 해결 된다.
 
인덱스를 생성하면 만드는데 시간이 좀 걸린다.
 

 

728x90