【问题标题】:Does Firebase Database store the latest data or all the data with timestamp?Firebase 数据库是否存储最新数据或所有带时间戳的数据?
【发布时间】:2017-05-03 14:41:02
【问题描述】:

我已在我的应用程序中启用 Firebase 持久性。如果我为孩子设置一个值,例如

child.setValue("XYZ");

我没有为父树增加价值。我只是在更新一个孩子的价值。因此,在这里,用户每天多次使用该应用程序时,该值将一次又一次地更新。所以,我的问题是,如果用户几天没有互联网连接,这个东西会产生错误,因为 Firebase 将这些东西存储在缓存中。是否所有数据都通过 git 中的提交之类的机制离线存储,或者仅存储最新值。我问这个问题是因为它是一种缓存,所以如果 firebase 存储数据以及孩子获得的所有日志和值,那么它可能会使我的应用程序出错且速度慢,因为它会一直携带所有缓存。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    如果您正在离线并且您正在更新一条记录,那么当您重新在线时,只有您的最后一次更新将在服务器上更新。让我们举个例子。您有一个存储timestamp 的产品。每次进行更新时,都会使用当前时间戳更改该时间戳。如果您处于离线状态并多次编辑该产品,那么当您重新在线时,只会在服务器上添加最后一个时间戳。

    但请记住,添加新数据时不会发生这种情况。执行此操作时,所有新数据都会根据您添加的时间添加到服务器上。删除时也会发生这种情况。

    希望对你有帮助。

    【讨论】:

    • 感谢您的支持,但如果您提供一些指向该信息的链接或某种官方声明,那就太好了。谢谢!
    • 请看official doc。
    • 但是我找不到官方说法,即firebase不存储键已设置的所有值或类似的东西。
    • Firebase 将所有值存储在本地。如您所知,在更新的情况下,Firebase 使用Map 来更新位置。因为更新使用相同的密钥,而不是添加新数据,您正在覆盖现有数据。换句话说,在Map 的情况下,它将旧值替换为新值。这就是您将only 获得最新更新的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2012-05-23
    • 2020-03-21
    • 1970-01-01
    • 2015-07-06
    • 2013-03-11
    相关资源
    最近更新 更多