【问题标题】:How to get newly updated data only from Firestore?如何仅从 Firestore 获取最新更新的数据?
【发布时间】:2018-09-15 19:26:16
【问题描述】:

在 Firestore 上发现任何更改时始终获取整个文档。如何获取仅新更新的数据?

这是我的数据:

我需要 msg 和 sendby 按对象顺序(例如:2018_09_17_30_40)在第一次加载时聊天,如果数据更新,则只获取新的 msg 和 sendby 在 get() 上获取整个文档而没有任何顺序 注意:Android 应用代码。

【问题讨论】:

  • 显示您到目前为止所尝试的内容。
  • 如果您有兴趣,我已经在我的一个 tutorials 中解释了如何使用 Cloud Firestore 和 Kotlin 创建聊天应用程序。

标签: java android firebase google-cloud-firestore


【解决方案1】:

您可以存储上次获取的日期,并且只获取日期大于上次更新日期的对象。

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')

【讨论】:

    【解决方案2】:

    当在火存储中发现任何更改时,始终获取整个文档。

    新的 Cloud Firestore 数据库与 Firebase 实时数据库的概念不同,不应混淆。没有字段级权限或对文档的访问。这是整个文件,或者什么都没有。 Cloud Firestore 侦听器在文档级别触发。仅使用文档中新更新的数据是无法触发的。

    看到您的数据库,我可以说您没有通过在聊天属性下添加这些消息来选择正确的架构。

    根据official documentation

    Cloud Firestore 针对存储大量小文档进行了优化。

    您应该考虑创建一个名为messages 的新集合,并将每条消息存储为单独的文档。在上面的链接中,有一些示例说明您如何实现这一目标。

    【讨论】:

    • 由于这是 Firestore 的工作方式,除了 tat 之外,我无法提供任何其他解决方案,但很高兴听到我可以帮助您以不同的方式思考。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多