2017-12-24 8 views
2

나는 많은 문서를 저장하는 Lists의 콜렉션을 가지고 있습니다. 각 문서에는 몇 가지 세부 정보와 users의 컬렉션이 있습니다. uid를 키로 사용하고 boolean을 값으로 사용하여 users 컬렉션 내에 사용자를 저장합니다. 즉, 해당 사용자 만 해당 특정 목록을 읽을 수 있습니다. 이것은 내 데이터베이스 구조입니다. 내 코드에서Cloud Firestore 용 색인을 자동으로 만드는 방법은 무엇입니까?

enter image description here 내가이 쿼리를 사용

FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); 
CollectionReference listsRef = rootRef.collection("Lists"); 
Query query = listsRef.orderBy("date").whereEqualTo("users."+uid, true); 

을 그리고 난 다음 오류 얻을 : 내가 필요한 인덱스를 생성하기 위해 콘솔에 가면

FAILED_PRECONDITION: The query requires an index. You can create it here: ... 

를, 모든 작동합니다 . 그러나 내 앱을 조인하는 각 사용자의 색인을 수동으로 만들 수 없기 때문에 색인을 자동으로 만들 가능성이 있습니다. 각 사용자별로 몇 개의 정렬 색인이 있으면 문제가 있습니까?

다른 해결 방법이 있습니까?

미리 감사드립니다.

답변

4

Cloud Firestore는 문서의 개별 필드에 색인을 자동으로 생성합니다. 여러 필드에 걸쳐있는 복잡한 인덱스는 (현재) Firebase 콘솔에서만 수동으로 생성 될 수 있습니다.

프로그래밍 방식으로 인덱스를 만들어야하는 경우 일반적으로 역방향 조회를 허용하도록 데이터 구조를 보완해야합니다. 예를 들어, 시나리오에서 각 사용자의 목록을 유지하는 userLists 컬렉션을 추가합니다.

+0

이제 알았습니다. 나는 각 사용자 밑에리스트를 만들 것이다. 프랭크 고마워! –

관련 문제