728x90
반응형
***상황
firebase/firestore 사용해서 프로젝트 중인데 데이터를 불러오는 부분에서 아래와 같은 식의 에러가 나왔다.
Console Error
@firebase/firestore: "Firestore (11.3.1): Uncaught Error in snapshot listener:" "FirebaseError: [code=failed-precondition]: The query requires an index. You can create it here: https://console.firebase.google.com/v1/~~~~~~~~=
***에러원인 분석.
소스에서 orderBy 를 썼을 경우 발생한다.
나의 경우 아래와 같이 썼었다.
const ordersQuery = query(
collection(db, "orders"),
where("totalOrderStatus", "==", "pending"),
orderBy("orderTime", "desc"),
)
const unsubscribe = onSnapshot(ordersQuery, (snapshot) => {
const ordersData = snapshot.docs.map((doc) => {
const data = doc.data()
...............
...............
이때, Firestore에서 복합 인덱스가 필요하다.
위의 예제기준으로 Firestore는
where("totalOrderStatus", "==", "pending") 와
orderBy("orderTime", "desc") 를 동시에 사용하려면 인덱스를 생성해야 한다.
***해결
Firebase 콘솔에서 직접 설정할 수 있다.
- Firebase 콘솔로 이동 : https://console.firebase.google.com/
- → Firestore Database → Indexes 탭으로 이동
- "Create Index" 버튼 클릭

내 소스기준으로
- Collection ID: orders
- 필드 추가:
- totalOrderStatus → Ascending
- orderTime → Descending
- "Create" 버튼 클릭

728x90
반응형
'IT기타' 카테고리의 다른 글
| Iron-Session 개념과 작동 원리 (0) | 2025.02.21 |
|---|---|
| (React) 버튼 2번 눌리는 현상 (0) | 2025.02.20 |
| 자바스크립트 기본 개념 : "async () => {}" "Promise, resolve" (1) | 2025.02.18 |
| Toss(토스) Payments- API 키 어디에? (0) | 2025.02.15 |
| IDE(vs code)에 Tabnine 설치 및 로그인 (IDE상단에 팝업이 안뜨는 경우) (0) | 2025.02.15 |