如何查询和过滤 Firebase 实时数据库 [重复]
Posted
技术标签:
【中文标题】如何查询和过滤 Firebase 实时数据库 [重复]【英文标题】:How can I query and filter Firebase Realtime Database [duplicate] 【发布时间】:2018-06-10 18:56:54 【问题描述】:我想从数据库中获取所有用户输入的名字和姓氏的人。
到目前为止,这是我的代码:
admin.database().ref('persons').orderByChild('Firstname').equalTo(firstName).limitToLast(1).once("value").then(function(snapshot)
此代码仅过滤名字,但我找不到为姓氏添加另一个 Where 子句的任何方法。我尝试添加另一个 orderBy,但它似乎不起作用。实时数据库是否必须如此难以进行简单的查询?
【问题讨论】:
Firebase 实时数据库查询只能对单个属性进行排序/过滤。在许多情况下,可以将要过滤的值组合成单个(合成)属性,例如"FirstName_LastName": "Frank_van Puffelen"
。有关此方法和其他方法的示例,请在此处查看我的答案:***.com/questions/26700924/…
【参考方案1】:
简短的回答:你不能。长答案:使用 Google 的新 Firestore 数据库或手动在客户端上执行过滤。其他选项请参见this answer。
【讨论】:
那么我可以说制作实时数据库的人太烂了!谢谢你的回答! 是的,您可以...使用自定义索引。 ***.com/questions/26700924/… 这不是真的,如果你读了答案,它说你不能。indexOn
只是一种在对任意子项进行排序时提高读取性能的方法。
@SUPERCILEX 如果向数据添加合成属性,则可以在实时数据库中完成与使用 Firestore 相同的用例。我完全赞成推荐 Firestore,因为它通过为您管理复合索引使这变得更容易,但查理是对的,它是可以过滤多个值(至少在一个简单的情况下,例如作为这个)。
哦,是的,忘记了。不过,问题是要添加另一个equalTo
,这是不可能的。无论如何,感谢您指出!以上是关于如何查询和过滤 Firebase 实时数据库 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Filterable 类过滤 Firebase 实时数据库结果