我正在使用 FirebaseRecyclerAdapter
并将 FirebaseRecyclerOptions
与一些查询传递给构造函数 . 每个项目都有多个字段,包括时间戳 a
和另一个整数字段 b
. 所以我希望旧版 a
但更少 b
的项目位于列表之上 . 使用sqlite很容易实现,但使用nosql却不那么容易 . 看来我需要添加一些额外的字段来保存两个字段: String.valueOf(a) + String.valueOf(b)
但是如何实现asc / desc属性?
加载整个列表并在Java中排序不是一种选择 .
1 回答
遗憾的是,Firebase Realtime数据库不支持对多个属性的查询,仅支持对单个子属性的查询 . 所以,你猜测你需要创建一个额外的字段以保留两个字段是正确的 . 因此,为了实现这一点,您需要创建一个新的字段,在您的数据库中应该如下所示:
如您所见,
a_b
属性组合了您要过滤的值 .与Firebase实时数据库不同,Cloud Firestore允许compound queries . 你应该看看这个 . 因此,在不创建组合属性的情况下,Cloud Firestore中允许使用下面的查询 .
订购字符串时,这是正常的订购方法 . 快速解决方法是在每个第二个元素之前添加两个零,如下所示:
"1516428687_001"
,"1516428687_002"
,"1516428687_012"
. 现在你的订单没问题 . 有关更多说明,请参阅post的答案 .