首页 > 解决方案 > 即使在添加索引后,Firestore 查询也不起作用

问题描述

我正在尝试根据 int 字段按降序获取数据 -从具有特定 id 字段的value集合组中获取数据。record为此,我做了一个这样的集合组查询:

  yield*
    FirebaseFirestore.instance
        .collectionGroup('record')
        .where(ConstStrings.teamId, isEqualTo: team.uid)
        .orderBy(ConstStrings.value, descending: true)
        .snapshots()
        .map(
          (snapshot) => right<Failure, List<Record>>(
            snapshot.docs
                .map((doc) => RecordDto.fromFirestore(doc).toDomain())
                .toList(),
          ),
        )
        .onErrorReturnWith((e) {
      if (e is PlatformException &&
          e.message.contains('PERMISSION_DENIED')) {
        return left(const RecordFailure.insufficientPermission());
      } else {
        return left(const RecordFailure.unknownError());
      }
    });

我为此查询添加了复合索引,如下所示:

record(集合 ID)teamId Ascending value Descending(索引字段) Collection group(查询范围)

如果我删除orderBy,查询会显示预期列表,但如果我保留它,它会显示空列表orderBy。这里实际上有什么问题。

标签: firebasefluttergoogle-cloud-firestore

解决方案


推荐阅读