Android Firebase多重排序 [英] Android Firebase multiple sort

查看:190
本文介绍了Android Firebase多重排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于firebase排序的问题。

我有下一个数据库:

  {
-Ka8xxTgyFB8yYKH50j_addclose:{
number:0,
point:949739,
timestamp:14824078463440,
用户名:Test 16062
},
-Ka8xzKecpbPr46Kx9gl:{
number:0,
point:1480851,
时间戳:14842078463441,
用户名:测试13599
}
}

我想显示按点排序的数据。
但是我只需要今天创建的行。



如果我过滤行时间戳:

  return databaseReference 
.child(list)
.orderByChild(timestamp)
.endAt(end.getTime());

endAt 工作良好。只列出今天的行。
但是...现在我需要通过 point 进行排序。



我该怎么办?



有什么想法在客户端更改数据库或对列表进行排序吗?

非常感谢!您需要对所有的数据客户端进行排序,因为每个查询只能有一个orderBy列。$ p

解决方案

b
$ b

如果您需要对服务器端进行双重排序,则必须更新数据库以使用组合键来保存时间戳和点。


I have a question about firebase sorting.

I have the next database:

{
    "-Ka8xxTgyFB8yYKH50j_addclose" : {
        "number" : 0,
        "point" : 949739,
        "timestamp" : 14824078463440,
        "username" : "Test 16062"
    },
    "-Ka8xzKecpbPr46Kx9gl" : {
        "number" : 0,
        "point" : 1480851,
        "timestamp" : 14842078463441,
        "username" : "Test 13599"
    }
}

I want to display data sorted by point. But i need rows only which created today.

If i filter the rows for timestamp:

return databaseReference
                .child("list")
                .orderByChild("timestamp")
                .endAt(end.getTime());

The endAt is work good. Only todays rows listed. But... Now i need to sort by point.

How can i do it?

There is any idea to change database or sort my list on clientside?

Thanks so much!

解决方案

You'll need to sort all your data client side as there can only be one orderBy column per query.

If you need to double sort server side you'll have to update your database to have a combined key that would hold both timestamp and point.

这篇关于Android Firebase多重排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆