【问题标题】:Link Android Room Database with Firebase Realtime Database将 Android Room 数据库与 Firebase 实时数据库相关联
【发布时间】:2018-10-02 23:30:15
【问题描述】:

我正在使用 Android Room Database 为我的 Android 应用程序创建数据库。它在本地非常适合我,但我无法链接到服务器以使其也在线。 我正在使用 Firebase 进行身份验证。我正在尝试使用 Firebase 实时数据库 从 Room 中保存整个数据库对象,并根据经过身份验证的用户在应用启动时加载正确的数据库。

我想问这是否可能?如果我可以保存整个 Room 数据库实例,或者我需要在 Firebase 上重新创建数据库并逐项保存我的数据?

我似乎也无法访问 Room 的数据库数据,因为当我获得 AppDatabase 类的对象时,它并没有真正传递数据。而且我不知道应该如何做相反的事情,将稍后从 Firebase 检索到的数据分配给保存的本地数据?

此外,如果 Firebase 无法使用,您对我可以与 Room 一起使用的其他服务器有什么建议吗?

【问题讨论】:

  • 嗨,皮埃尔·加利!几周以来,我一直在寻找如何将 Android Room DatabaseFirebase 实时数据库 结合在一起,但我只找到了单独的示例。您能就如何完成这项任务提出任何建议吗?
  • 嗨,艾莉顿!根据我的研究(我不确定我是否仍然是最新的),但没有办法将它们联系在一起。正如我所做的(根据我在下面的回答),我只是使用 Firebase 从头开始​​重新创建了数据库。

标签: android database firebase-realtime-database database-connection android-room


【解决方案1】:

经过大量研究并拼命寻找答案,我得出了以下结论:

  • Firebase 已经有了一种直接的方式来创建数据库并在线托管它。 (我已经创建了我的数据库,所以想节省时间,但是使用 Firebase 实时数据库从头开始创建它要快得多)
  • 如果您打算保存数据库本地和离线,房间​​数据库非常完美(截至发布日期)

【讨论】:

  • 请记住,Firebase 实时数据库还提供持久性(离线)存储,可以像 Room 数据库一样无缝工作。在您的应用程序类 [Manifest file -> Application -> android:name] 中添加以下行以立即启动此过程。 /* Enable disk persistence */ FirebaseDatabase.getInstance().setPersistenceEnabled(true);
  • @PravyNandas 是的,我发现这也是一个选项,它对我来说非常有用,因为我需要在线和离线一起工作!但是,当我只需要一个离线数据库时,Room 对我来说更容易使用!感谢您指出:)
  • 我有一个类似的任务。我打算将 Room 用作本地存储,但我也需要同步/备份功能。为此,我将在 Firebase 中使用复制日志。它是一个单一的集合,具有房间数据的“平面”表示。
  • 如果您只需要平面表示,那绝对是一个不错的选择。感谢分享!
  • 嗨@PierreGhaly,我也遇到了同样的情况,看到了你的帖子。目前我正在使用 ROOM Sql 数据库、DAO、RxJava Observables 和 LiveData。当您切换到 Firebase 时,您是如何处理这个问题的?
【解决方案2】:

我创建的类似项目使用

  1. 对登录用户的 Firebase 身份验证
  2. 使用 Room 将用户注释保存和缓存到 sql lite 数据库
  3. 将用户注释保存到 Firebase 基础数据库

✍️ 简单的笔记制作应用使用 Sqllite Room ? 缓存笔记和 ? Firebase 数据库进行在线存储

https://github.com/LanguageXX/Simple-Note-App-with-Online-Storage

希望对你有帮助

【讨论】:

  • 我检查了你的代码,我认为它有点错误。您正在将数据从 View Controller 层保存到 Firebase RTDB。不应将其更改为 FirebaseRepository 之类的内容。我希望你更新你的代码,让它成为其他人的一个很好的参考:)
【解决方案3】:

我认为他们不需要将您的 Room 数据库与 Firebase 实时数据库连接起来,因为,首先尝试解决这个问题,我们为什么要使用 Room 数据库?因为当我们没有互联网时,我们可以从 Room 数据库中获取数据,不需要网络... Firebase 也提供离线模式,它也可以持久保存数据,那我们为什么要使用 Room Database 呢?...希望你明白了...

【讨论】:

  • 欢迎使用stackoverflow,请通读问题和接受的答案以获取更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2019-03-22
  • 2020-09-23
  • 1970-01-01
相关资源
最近更新 更多