在Firestore上发现任何更改时,始终获取整个文档。如何获取仅新更新的数据?
这是我的数据
在第一次加载时,我需要按聊天对象中的对象顺序发送msg和sendby(例如:2018_09_17_30_40),如果数据已更新,则仅获取新的msg和sendby 在get()上获取整个文档而没有任何顺序 注意:适用于Android应用的代码。
答案 0 :(得分:2)
您可以存储上次获取的日期,并且只能获取日期大于上次更新日期的对象。
db.collection('groups')
.where('participants', 'array-contains', 'user123')
.where('lastUpdated', '>', lastFetchTimestamp)
.orderBy('lastUpdated', 'desc')
答案 1 :(得分:0)
在火灾存储中发现任何更改时,始终获取整个文档。
新的Cloud Firestore数据库与Firebase实时数据库具有不同的概念,因此请勿混淆。没有字段级权限或对文档的访问。这是整个文档,或者什么也没有。 Cloud Firestore侦听器在文档级别上触发。仅凭文档中的新更新数据就无法触发。
看到您的数据库,我可以说您没有通过在chat属性下添加这些消息来选择正确的模式。
Cloud Firestore经过优化,可以存储大量小文件。
您应该考虑创建一个名为messages
的新集合,并将每条消息存储为单独的文档。在上面的链接中,提供了有关如何实现此目标的示例。
答案 2 :(得分:0)
Alex mamo的答案将我引到了另一个解决方案,因为我在数据库中遇到了模型问题,所以我所做的是对键进行排序
JSONObject jsonChat = jsonObj.getJSONObject("chat");
ArrayList list = new ArrayList<>();
for (int i = 0; i < jsonChat.names().length(); i++) {
list.add(jsonChat.names().getString(i));
}
Collections.sort(list);