【问题标题】:How to modify firebase offline data via android?如何通过android修改firebase离线数据?
【发布时间】:2018-11-17 14:02:39
【问题描述】:

我目前正在开发的安卓应用主要是离线运行。然而,当在线时,用户可以连接到数据库来下载他们需要的数据。此外,他们能够离线管理数据,因此他们可以删除他们不想使用的数据。用户不能修改在线数据库。 我正在使用具有持久性功能的 Firebase,以保存日期以供在线使用。我的问题是,我无法正确管理数据。

由于 firebase 会下载整个数据库: 有没有办法选择,我想从firebase下载哪些查询? 如果没有,我可以从本地内容中删除那些我不想使用的查询吗?

【问题讨论】:

    标签: android firebase firebase-realtime-database kotlin


    【解决方案1】:

    您似乎不想要 firebase 数据库的同步功能。

    但在线时,用户可以连接到数据库下载 他们需要的数据。此外,他们能够离线管理数据, 这样他们就可以删除他们不想使用的数据。用户不能 修改在线数据库。

    在规则中将此表设置为 false 并且无法进行修改,因为您已启用磁盘持久性 firebase 将读取较新的更新但不会写入用户更改。此外,它可能会在同步期间丢弃用户的现有更改(用户已删除)并从云中放入较新的更改,因此您可能(因为我从未尝试过)最终会这样做同步自己,请搜索并阅读此内容。

    由于firebase下载整个数据库:有没有办法选择, 我想从firebase下载哪些查询?如果没有,我可以删除吗 那些我不想使用的查询,来自本地内容?

    您必须关闭每张桌子上的同步功能,如下所示

    DatabaseReference dbRef=FirebaseDatabase.getInstance().getReference("table-name");
    dbRef.keepSynced(false);
    

    请参阅docs。我认为这必须在每个节点上完成,因为除了禁用你想要的磁盘持久性之外,没有办法在整个 firebase 实时数据库上关闭它。

    恕我直言,您似乎正在使用 firebase 作为将数据存储在云中的地方,以防同步功能最终丢弃您的本地更改以同步您应该考虑使用 SQL 的在线更改-lite DB with Room ORM,因为它可以满足您获取数据并在本地修改数据的目的,但是这里的权衡是您必须以适当的方式维护数据以查询更新的更改或查看是否有任何更改更新/删除任何旧记录。

    【讨论】:

    • 好主意,我将使用 SQL-lite 将数据存储在我的设备上。为防止无用解析,我将使用gson创建json字符串并存储在数据库中。
    猜你喜欢
    • 2016-05-31
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多