【发布时间】:2018-10-06 12:55:10
【问题描述】:
我正在尝试使用 Cloud Firestore 的 Firebase-UI 库创建聊天。 This github 存储库包含我正在使用的相关代码。 问题在于查询的顺序。
看到查询被指定为:
Query sChatQuery = sChatCollection.orderBy("timestamp").limit(50);
但是,我以正确的顺序(从旧到新)收到了最旧的 50 条消息,而不是最新消息。另一方面,我可以使用以下查询:
Query sChatQuery = sChatCollection.orderBy("timestamp", Query.Direction.DESCENDING).limit(50);
这将检索 50 条最新消息,但顺序错误(最新在顶部,最旧在底部)。因此,我不知道如何做到这一点。
我可以在本地再次反转查询的结果,但我不知道该怎么做(我已经通过 FirebaseUI 库但没有运气)。
编辑
我的chat 集合中的每个事件都有我的chat 子集合:
events/event_doc/chat/chat_doc
我想得到如下消息:
Message 1
Message 2
Message 3
Message 4
...
使用默认顺序,我收到如上所示的消息,但 limit 指令将快照从 1 减少到 50,并且未检索到 Message 51(最新)。
【问题讨论】:
-
你试过用
Query sChatQuery = sChatCollection.orderBy("timestamp", Query.Direction.ASCENDING).limit(50); -
是的,这似乎是默认顺序:
Query sChatQuery = sChatCollection.orderBy("timestamp").limit(50); -
请将您的数据库结构添加为屏幕截图,并通过具体示例说明您想要获取的确切顺序。
-
更新了问题。
标签: java android firebase google-cloud-firestore firebaseui