【问题标题】:firebase index query implementationfirebase 索引查询实现
【发布时间】:2021-08-05 16:33:21
【问题描述】:

添加了下面提到的查询,并在 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);
    }
  }

【问题讨论】:

  • 如果您需要复合索引,请检查您的调试控制台并点击该错误消息中的链接,然后创建一个索引。
  • 索引已经创建,没有出现这样的错误...
  • 您好,我发现了一个相关案例,可能对您有所帮助关于 In queries,这可能是您的问题的解决方案,对我来说似乎非常相似。

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

我认为问题可能是因为您尝试分别运行两个范围查询。

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

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

您可以在此处阅读有关 Firebase 中查询工作原理的信息: https://firebase.google.com/docs/firestore/query-data/queries

【讨论】:

  • 谢谢...是的,我也尝试过这样做但仍然无法获取数据,如果我删除 .where('age', isLessThanOrEqualTo:currentUser.ageRange['max'] ) 然后它工作正常。而且我不知道它之前是如何正常工作的,因为我没有在此页面上进行任何更改,那么这里出了什么问题.....
猜你喜欢
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2021-03-31
  • 1970-01-01
相关资源
最近更新 更多