android - 实时查询 sortByChild 按字符而不是按值排序
问题描述
对实时 Firebase 进行查询
DatabaseReference mReference = mDatabase.getReference("Cards/" + language + "/" + gameTitle);
Query query = mReference.orderByChild("rank");
query.addValueEventListener
它假设对其进行排序rank
并给出 1/2/3/4/5/6 值。取而代之的是它返回 1/10/11/12/13/14/15/16/17/18/19/2/20/21 等......这就是层次结构的样子(对不起俄语,但没有英语然而)
看起来它是按第一个字符而不是整个值排序的
解决方案
它假设按等级对其进行排序并给出 1/2/3/4/5/6 值。相反,它返回 1/10/11/12/13/14/15/16/17/18/19/2/20/21
这是正常行为,因为您根据rank
属性对结果进行排序,该属性是字符串类型而不是数字。当您对字符串进行排序时,元素按字典顺序排列。
有两种方法可以解决这个问题,要么使用上面答案中的我的解决方案,要么将属性类型更改为数字。在我看来,由于所有这些值都是数字,因此您应该继续使用解决方案。
推荐阅读
- memory-leaks - 调查使用 TMinuit ROOT 和 valgrind 时的内存泄漏
- reactjs - 反应嵌套路由不加载组件
- android - 每次我运行任何应用程序时,颤振都会给我错误
- r - 如何有条件地将具有多个值的两行合并在一起并在R中变异?
- elasticsearch - APOC Elasticsearch 查询格式
- pandas - 如何使用现有列的条件在 Dataframe 中创建新列?
- postgresql - 在 where 条件下更快的 Postgres 计数
- java - javax.persistence.RollbackException:提交事务时出错(没有 Spring 的 JPA)
- python-2.7 - Rsyslog、omprog 和 python
- flutter - 如何使用颤振检索 Firestore 数据