java - Firestore - 按降序排序
问题描述
在我的 Firestore 数据库中,我有字段索引号,数据类型是字符串,但他的数据是数字,如 1、2、3 等。
collectionReference
.orderBy("indexNo", Query.Direction.DESCENDING)
直到 9 点输出都可以,在 9 点之后,即对于 10、11、12,数据显示为 1、10、11、12、2、3 等等。
请指导我解决它,因为这些数字将决定卡片视图项目在回收站视图中的排列。
谢谢...
解决方案
如果您的indexNo
属性的数据类型是 String 类型,并且您想使用 对结果进行排序Query.Direction.DESCENDING
,则结果将不是预期的结果,因为当您对字符串进行排序时,结果是按字典顺序排序的。有两种方法可以解决此问题。第一个是将属性的数据类型从字符串更改为数字,我个人推荐这样做。
这是数字的正常顺序:
- 1308
- 1309
- 1310
- 1311
这是字符串的正常顺序:
- “1308”
- “1309”
- “131”
- “1310”
第二种方法是修改数据以获得您想要的行为。对于数字,您可以通过用零填充它们来实现这一点,如下例所示:
- "0131" //前面加零
- "0132" //前面加零
- ……
- “1308”
- “1309”
- “1310”
- “1311”
推荐阅读
- php - Symfony Doctrine ORM CLI 字体/颜色不起作用?
- node.js - 注销用户 aws cognito
- javascript - 在大括号之间替换
- vue.js - 如何将 SVG 图像添加到 vuetify 文本字段
- python - 我可以在python中定义setter吗?
- html - 悬停边框移动父级内部的div
- cucumber-jvm - 如何从黄瓜中的特定失败场景大纲示例中获取步骤
- jboss - 无法解析关于时间戳的 jboss 日志文件
- ios - 带有 JSONEncoding 的 Alamofire 请求给出错误
- python - 重新排序 X、Y 数据以定义底部形状