【问题标题】:How can I query and filter Firebase Realtime Database [duplicate]如何查询和过滤 Firebase 实时数据库 [重复]
【发布时间】: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"。有关此方法和其他方法的示例,请在此处查看我的答案:stackoverflow.com/questions/26700924/…

标签: javascript node.js firebase firebase-realtime-database


【解决方案1】:

简短的回答:你不能。长答案:使用 Google 的新 Firestore 数据库或手动在客户端上执行过滤。其他选项请参见this answer

【讨论】:

  • 那么我可以说制作实时数据库的人太烂了!谢谢你的回答!
  • 是的,您可以...使用自定义索引。 stackoverflow.com/questions/26700924/…
  • 这不是真的,如果你读了答案,它说你不能。 indexOn 只是一种在对任意子项进行排序时提高读取性能的方法。
  • @SUPERCILEX 如果向数据添加合成属性,则可以在实时数据库中完成与使用 Firestore 相同的用例。我完全赞成推荐 Firestore,因为它通过为您管理复合索引使这变得更容易,但查理是对的,它可以过滤多个值(至少在一个简单的情况下,例如作为这个)。
  • 哦,是的,忘记了。不过,问题是要添加另一个equalTo,这是不可能的。无论如何,感谢您指出!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多