答案 0 :(得分:0)
正如我在您的数据库中看到的那样,您将所有这些值存储为字符串而不是数字。当您尝试对字符串进行排序时,您需要知道字符串是按顺序排列的lexicographically
。
快速解决此问题的方法是将数据类型从字符串更改为int
或long
。所以对于数字,这是正常的顺序:
但对于字符串,这是正常的顺序:
Firebase中没有运营商,据我所知,也没有其他数据库允许您更改此行为。相反,您必须修改数据才能获得所需的行为。因此,按字典顺序排序时,按照您需要的顺序存储值。对于数字,您可以通过用零填充它们来实现这一点:
要订购结果,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference tableRef = rootRef.child("table");
Query query = tableRef.orderByChild("teamPoints");
query.addListenerForSingleValueEvent(/* ... */);
我错过了,但根据@ FrankvanPuffelen的评论,请参阅帖子,其中解释了您可以撤销订单的方式。