如何查询和过滤 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 实时数据库结果

Firebase实时数据库数组查询问题[重复]

Flutter - 从特定值中删除数据,Firebase 实时数据库 [重复]

firebase 9 查询实时数据库的关键

查询和改变firebase实时数据库多对多(双向)关系

Firebase Swift - 当搜索控制器过滤结果时,实时更新不起作用