【问题标题】:Retrieve data from Firebase by date按日期从 Firebase 检索数据
【发布时间】:2016-07-27 05:13:16
【问题描述】:

我在 Firebase 中的应用商店聚会。每个聚会都有一个结束日期,该日期已转换为字符串并作为聚会的属性保存在 Firebase 中(见图)。当应用程序从 Firebase 检索数据时,它会将所有聚会拉到一个数组中,如果结束日期在过去,则过滤掉聚会。我正在尝试找到一种查询 Firebase 的方法,它只提取结束日期等于或大于当前日期的聚会。不需要结束日期过去的聚会,并且永远不会在应用程序上显示,而且它增加了用于下载聚会的网络带宽。有没有人对如何从查询中排除聚会有任何解决方案/建议,这样我就不必在客户端过滤掉聚会?

【问题讨论】:

  • startDateendDate 存储为 Unix 时间戳,以便您进行比较。
  • @triple.s 谢谢!我会试试这个

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

Firebase 在此处提供了一系列查询和限制功能:

https://firebase.google.com/docs/reference/ios/firebasedatabase/interface_f_i_r_database_query#a5d089e583013c7cdcd653f974e2cba56

如果我没记错的话,你应该能够像这样构建一个有限的聚会查询

ref.child("meetups").queryOrderedByChild("endDate").queryStartingAtValue(currentDate).queryEndingAtValue(currentDate).observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
   //do something     
})

编辑

您将希望将 startDate 和 endDate 字段存储为时间戳

【讨论】:

  • 非常感谢。我将尝试一下,并会根据它的工作原理更新答案。
  • 您能解释一下为什么包含 .queryEndingAtValue(currentDate) 吗?
  • 是的,这不正确,很好。您只需要 queryStartingAtValue,因为您希望 endDates 等于或大于当前日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2013-08-04
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 2013-09-12
相关资源
最近更新 更多