Firebase数据按时间戳排序

时间:2016-11-27 03:24:48

标签: sorting firebase firebase-realtime-database

我有如下的Firebase节点结构。

categories
    category1
        timestamps
            23c491sdfwrasddgasd: true
            asdf8234dfjalskdask: true
            39fsdizxcasfgbskdf7: true
            2asqwizxov340bs9fms: true
    category2
        timestamps
            p23491sdfwrasddgasd: true
            asdfpovaskdrfskdask: true
    category3
        timestamps
            vmk339ffk3rasddgasd: true
            asdf8234dfjalskdvml: true
            bnwdwizxcasfgbskdf7: true

时间戳键是由push()生成的键。我需要按照他们拥有的最早的时​​间戳键对类别进行排序。只有时间戳节点中最旧的时间戳才会计数。

基本上我需要在第一次修改类别时对类别进行排序。

欢迎任何帮助,包括重新设计节点的提示。

1 个答案:

答案 0 :(得分:1)

你有没有考虑过平板化你的数据库? 将您的数据库设计更改为:

类别

  category1
    oldest_timestamp: 2asqwizxov340bs9fms
    timestamps
        23c491sdfwrasddgasd: true
        asdf8234dfjalskdask: true
        39fsdizxcasfgbskdf7: true
        2asqwizxov340bs9fms: true
  category2
    oldest_timestamp: asdfpovaskdrfskdask
    timestamps
        p23491sdfwrasddgasd: true
        asdfpovaskdrfskdask: true
  category3
    oldest_timestamp: bnwdwizxcasfgbskdf7
    timestamps
        vmk339ffk3rasddgasd: true
        asdf8234dfjalskdvml: true
        bnwdwizxcasfgbskdf7: true

基本上你添加了一个名为" oldest_timestamp"的节点。现在,您可以使用查询轻松订购类别。

Query myquery =  FirebaseDatabase.getInstance().getReference().child("categories").orderByChild("oldest_timestamp");

请勿忘记在Firebase数据库规则中对其进行索引,以获得更好的效果。