【问题标题】:How do I index queries in Firebase?如何在 Firebase 中索引查询?
【发布时间】:2021-07-06 11:47:02
【问题描述】:

我正在尝试获取包含与用户位置匹配的位置字段的文档:

getLocationListings(placemark) async {
    setState(() {
      isLoading = true;
    });
    QuerySnapshot snapshot = await FirebaseFirestore.instance
        .collectionGroup("posts")
        .where('location', isGreaterThanOrEqualTo: placemark.locality)
        .get();
    setState(() {
      posts = snapshot.docs.map((doc) => Post.fromDocument(doc)).toList();
      isLoading = false;
    });
  }

我收到了错误:

Operation was rejected because the system is not in a state required for the operation's execution. If performing a query, ensure it has been indexed via the Firebase console. 

但我在控制台创建了索引为

我该如何纠正这个问题?

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    您为该集合组创建的索引中可能有问题。我建议你删除你创建的索引并再次运行该函数,它会抛出一个错误,如果你要通过执行来检查 android 设备日志

    adb logcat
    

    在终端上你会看到这样的消息:

    'FAILED_PRECONDITION:查询需要索引。你可以在这里创建它:https://console.firebase.google.com/v1/r/project/XXXXXXXXX/firestore/indexes?create_composite=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

    只需单击链接并创建建议的索引,这应该可以解决问题。

    【讨论】:

    • 当我将鼠标悬停在索引上时,我什至没有得到我应该删除的选项。这是我第一次尝试使用 Firebase,真的很令人沮丧。
    • 嗯,可能是 Firebase 用户界面的问题,您可以按照this documentation 中分享的步骤使用 GCP 用户界面尝试一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多