Firebase从中键查询数据

时间:2016-07-28 10:53:58

标签: android firebase firebase-realtime-database

我有一个有日期的数据列表。我通常查询按日期排序的数据。但是当我需要从中间键来回检索一些数据时,我处于这种情况。我有按日期排序的数据(orderByChild("date")),如下所示:

{
    "key1":{
        "date": "2016-07-25"
    },
    "key2":{
        "date": "2016-07-26"
    },
    "key3":{
        "date": "2016-07-27"
    },
    "key4":{
        "date": "2016-07-28"
    },
    "key5":{
        "date": "2016-07-29"
    }
}
  

注意:日期也可能在将来。每个日期可以有多个条目。两个日期之间可能存在差距。

如果我知道key3,我如何从key3之上(即key2)检索到列表末尾的数据(即key5)?

例如,

  • with key3 - > key2到key5(直到结束)。
  • with key4 - > key3到key5(直到结束)。

如何使用密钥进行查询,并按子“date”进行排序。我有 key2 。从中我需要获取列表。

我试图在部分中获取结果,一个用于上部,一个用于下部。但是,当我使用orderByChild("date")时,我无法将endAt()与密钥一起使用(文档说:您可以结合使用startAt()endAt()方法将结果限制在指定范围内)。

有什么办法可以根据密钥检索列表吗?单程或部分?

1 个答案:

答案 0 :(得分:0)

我已经改变了键的定义方式。

我使用date和push()的组合设置了密钥,而不是push()

同样,新密钥采用以下格式YYYYMMDD<PUSH_KEY>。使用此格式,我可以使用2个单独的查询来查询数据。

以钥匙结尾:

ref.orderByKey().endAt(key).limitToLast(1)

,一个以密钥开头:

ref.orderByKey().startAt(key)

这给了我来自中间键两端的结果。

感谢@puf和大家的评论和帮助。