【问题标题】:How to query all childs values from child( firebase) [duplicate]如何从孩子(firebase)查询所有孩子的值[重复]
【发布时间】:2021-04-22 20:57:22
【问题描述】:

我想执行以下操作:

    firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("resources");
    Query firebaseSearchQuery =firebaseDatabase.child("tags").startAt(text).endAt(text+"\uf8ff");

在每个 tags 的子值中查找与 text 的匹配项。 对我来说:"whopper", "burger", "king", "Whopper"

如何查询和查找匹配项?

【问题讨论】:

  • 您当前的数据结构可以轻松找到资源的标签。但是,它并不容易找到标签的资源。为此,您需要创建一个额外的反向数据结构,将标签映射回资源。有关这方面的更多信息,请参阅stackoverflow.com/questions/40656589/…

标签: java android database firebase firebase-realtime-database


【解决方案1】:

似乎您想查找所有值包含特定字符串的子项。

equalTo()根据选择的排序方法返回等于指定键或值的项目。

DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference resources01Referense = rootReference.child("01").child("tags");
Query query = resources01Referense.orderByValue().equalTo(text+"\uf8ff");
 

然后查询你的数据

Link to do documentation

【讨论】:

    【解决方案2】:

    您的“标签”节点实际上是一个 Map,其中包含四个键值对。不幸的是,Firebase 没有提供使用“startAt()”和“endAt()”搜索这种结构的方法,它仅适用于 String 类型的属性。您需要的是某种搜索功能。不幸的是,Firebase 不支持本地索引或在数据库属性中搜索文本字段。但是,要解决此问题,我建议您查看以下帖子中的答案:

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2017-06-04
      相关资源
      最近更新 更多