首页 > 解决方案 > firebase 索引查询实现

问题描述

添加了下面提到的查询并在firebase中创建了索引,但我不知道自昨天以来发生了什么,它没有根据此查询显示数据,如果我删除它:-.where('age', isLessThanOrEqualTo:currentUser.ageRange['max'])从下面的查询中显示数据,否则不显示数据。早些时候,这工作正常,没有问题。

我已经尝试过flutter clean但仍然没有成功,请帮助我,因为我想在项目中实现它。

query() {
    if (currentUser.showGender == 'everyone') {
      return docRef
          .where('age', isGreaterThanOrEqualTo: currentUser.ageRange['min'])
          .where('age', isLessThanOrEqualTo:currentUser.ageRange['max'])
          .orderBy('age', descending: false).limit(docLimit);
    } else {
      return docRef
          .where('editInfo.userGender', isEqualTo: currentUser.showGender)
          .where('age', isGreaterThanOrEqualTo:currentUser.ageRange['min'])
          .where('age', isLessThanOrEqualTo: currentUser.ageRange['max'])
          .orderBy('age', descending: false).limit(docLimit);
    }
  }

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


我相信这个问题可能是因为你试图分别运行两个范围查询。

您可能无法做到这一点,因为这是查询的限制之一。

您可以尝试在单个查询中包含两个比较,例如 .where("age",isGreater... : x, isLess..: y)

您可以在此处了解如何在 firebase 中进行查询: https ://firebase.google.com/docs/firestore/query-data/queries


推荐阅读