【问题标题】:Offline database capability while using firebase使用 firebase 时的离线数据库功能
【发布时间】:2022-01-07 10:21:23
【问题描述】:

我是 Firebase 的新手,我正在研究它是否符合我们的需求。除了离线数据库外,它拥有我们需要的一切。好吧,我知道它能够在用户离线时缓存更改,然后在用户在线时同步它们,但这不是我要说的。

由于 firebase 的成本很高,我们希望我们的免费用户只能离线使用该应用,并且无论用户是否在线,数据都不应同步到云端,并且只对订阅用户使用同步。

我们尚未考虑太多的解决方案是使用 SQLite 之类的离线数据库,并且:

a) 当用户订阅时,将数据移动到 firebase

b) 如果用户取消订阅,则将数据移动到 SQLite

但是这个解决方案需要 2 个完全不同的编码相同的东西。用于从 SQLite 迁移到 firebase 以及从 firebase 迁移到 SQLite 的额外代码。有没有更好的解决方案来使用 Firestore 数据库,同时具备完整的离线数据库功能?

【问题讨论】:

    标签: database firebase google-cloud-platform google-cloud-firestore


    【解决方案1】:

    在我看来,您的解决方案是可行的。但是有些情况您应该考虑到。

    a) 当用户订阅时,将数据移动到 Firebase。

    据我了解,这是其中之一。在这种情况下,当用户订阅时,您应该始终考虑锁定本地 SQLite 数据库以进行写入,直到 所有数据写入 Firebase 服务器。操作完成后,您才应该允许用户在云中写入数据。

    为什么需要这个?始终拥有一致的数据。

    b) 如果用户取消订阅,则将数据移动到 SQLite。

    如果用户取消订阅,您可以考虑使用与上述几乎相同的机制。但首先,您必须清除本地数据库,因为它会包含过时的数据,然后将 Firestore 中的所有数据直接复制到 SQLite 数据库中。

    编辑: 您还可以考虑 copying the data from the local cache 而不是从 Firebase 服务器获取它。这意味着没有成本。

    但是这个解决方案需要 2 个完全不同的编码相同的东西。

    没错,但是由于离线数据库和在线数据库共享相同的字段,因此操作可能没有想象的那么复杂。只需 attach a real-time listener 在用户对象内的属性上,很可能称为“订阅”,它可以保存真/假值,并在更改时采取相应的措施。

    【讨论】:

    • 感谢您的回答。关于您所说的技术性问题,我是一名老开发人员,因此我对它们有所了解,我想知道的是,1. firebase 可以同时用于两者,2. 其他人做什么,而您的回答显然涵盖了两者我需要同时使用两者。再次感谢。
    • 我的编辑答案中的另一件事可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2020-11-30
    • 2021-11-25
    相关资源
    最近更新 更多