Ios 按日期从Firebase检索数据

Ios 按日期从Firebase检索数据,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我的应用程序在Firebase中存储会议。每个meetup都有一个结束日期,该日期已转换为字符串,并作为meetup的属性保存在Firebase中(见图)。当应用程序从Firebase检索数据时,它会将所有会议组拉入一个数组,如果结束日期在过去,则过滤掉会议组。我试图找到一种查询Firebase的方法,在Firebase中,它只提取结束日期等于或大于当前日期的聚会。不需要结束日期在过去的聚会,也永远不会在应用程序上显示,而且它增加了用于下载聚会的网络带宽。是否有人对如何从查询中排除Meetup有

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

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

如果我没有弄错的话,您应该能够像这样构建一个有限的Meetup查询

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


您需要将startDate和endDate字段存储为时间戳

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

如果我没有弄错的话,您应该能够像这样构建一个有限的Meetup查询

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


您需要将startDate和endDate字段存储为时间戳

startDate
endDate
存储为Unix时间戳,以便能够进行比较。@triple.s谢谢!我将尝试将此存储
startDate
endDate
作为Unix时间戳,以便您能够对其进行比较。@triple.s谢谢!我试试这个谢谢你。我将尝试一下,并将更新答案与它的工作原理。你能解释一下为什么。queryEndingAtValue(currentDate)包括在内吗?是的,这是不正确的,很好的捕获。由于您希望endDates等于或大于当前日期,所以只需查询StartingAtValue即可。非常感谢。我将尝试一下,并将更新答案与它的工作原理。你能解释一下为什么。queryEndingAtValue(currentDate)包括在内吗?是的,这是不正确的,很好的捕获。您所需要的只是queryStartingAtValue,因为您希望endDates等于或大于当前日期。