Flutter & Firestore : 가장 최근에 먼저 가져 오려면 어떻게해야합니까?

Nov 25 2020

Firestore에서 가장 최근의 첫 번째 항목을 가져 오려면 어떻게합니까?

FirebaseFirestore.instance.collection(Strings.factsText)
                .where(
                    Strings.category,
                    whereIn: [Strings.climateChange])
                    .orderBy('timestamp', descending: true)
                    .snapshots(),
               
                    ...
                  final factsDocs = snapshot.data.documents;
                  return FactsListContainer(factsDocs: factsDocs);
                });

와 함께 .where사용할 때 문제가 있는 것 같습니다 .orderBy.

답변

2 FrankvanPuffelen Nov 25 2020 at 22:34

createdAt타임 스탬프 가있는 필드가 있거나 항상 증가하는 값 이있는 경우 다음을 사용하여 해당 필드의 내림차순으로 스냅 샷을 가져올 수 있습니다.

stream: FirebaseFirestore.instance
  .collection(Strings.factsText)
  .orderBy('timestamp', descending: true)
  .where(
    Strings.category,
    whereIn: [Strings.climateChange])
    .snapshots(),

또한 Query.orderBy메서드 에 대한 FlutterFire 문서를 참조하십시오 .

1 SK7 Dec 21 2020 at 19:29

마침내 Firebase 콘솔에서 색인을 생성하여 문제를 해결했으며 완벽하게 작동하여 이제 최신 버전을 먼저 가져옵니다.

내 데이터베이스에서 인덱스로 이동하여 새 인덱스를 만들고 컬렉션 이름을 추가 한 다음 필드에 대해 '카테고리'(내림차순 및 '타임 스탬프')를 추가하고 컬렉션을 클릭 한 다음 인덱스 생성을 클릭했습니다.