如何从孩子(firebase)查询所有孩子的值[重复]

Posted

技术标签:

【中文标题】如何从孩子(firebase)查询所有孩子的值[重复]【英文标题】:How to query all childs values from child( firebase) [duplicate] 【发布时间】: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"

如何查询和查找匹配项?

【问题讨论】:

您当前的数据结构可以轻松找到资源的标签。但是,它并不容易找到标签的资源。为此,您需要创建一个额外的反向数据结构,将标签映射回资源。有关这方面的更多信息,请参阅***.com/questions/40656589/… 【参考方案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 不支持本地索引或在数据库属性中搜索文本字段。但是,要解决此问题,我建议您查看以下帖子中的答案:

Firebase Realtime Database Search by word in between the query?

【讨论】:

以上是关于如何从孩子(firebase)查询所有孩子的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何按孩子的属性查询 Firebase?

如何从 Firebase android kotlin 获取所有具有特定价值的孩子?

从多个孩子 Android Firebase 中检索同一个孩子

如何从firebase数据库中获取一个孩子

如何在Firebase中搜索孩子的值

Firebase如何向所有孩子添加新数据