我有一个聊天对话,我要做的是从数据库中的Date object
获取ChatMessagesCollection
(最后一条消息timestamp
)。如果在这种情况下使用orderBy()
是正确的方法,我有严重的疑问,因为正如我想象的那样每次都会Query
Collection
,每次弹出时我都只需要最新的记录。有没有办法捕捉最新的变化并获得它的价值而不是查询整个集合并对其进行排序?
Post scriptum:
在db.set(map)
抓住它不是一种选择,因为无论哪个用户是发件人,我都需要最新的messageTime
。
编辑:
chats.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot snapshot, FirebaseFirestoreException e) {
// from newest document, get("MessageTime")
}
});
是否可以尝试以这种方式实现它?我试图在很多方面咬一口,但除非经过Query.sortBy()
,否则我认为没有其他选择。
答案 0 :(得分:1)
我找到了一个解决方案,也许有一天会有人受益。
chats.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot snapshot, FirebaseFirestoreException e) {
for (DocumentChange documentChange : snapshot.getDocumentChanges())
{
Object date = documentChange.getDocument().getData().get("date");
}
}