【问题标题】:How to sync IndexedDB with Firestore?如何将 IndexedDB 与 Firestore 同步?
【发布时间】:2021-01-03 10:00:10
【问题描述】:

我正在使用 React、Redux 和 Firebase/Firestore 为网络构建一个工作门户。我已经完成了我需要的所有功能,除了一个。

我希望未注册用户/求职者能够:

  1. 为招聘职位添加书签。
  2. 保留应聘职位的记录。
  3. 保留搜索查询记录。

我正在考虑将 IndexedDB 用于此功能。特别是 Dexie.js 让事情变得更容易。但是,此数据将保留在用户的浏览器中,用户将无法在其他浏览器或设备中访问它。因此,如果用户登录网站,我想为用户提供一个选项,以便能够将所有数据保存到 Firestore,我需要这是自动的。因此,一旦用户登录,我就会将其保存到数据库中。

我考虑过使用匿名身份验证而不是 IndexedDB/Firestore,因此所有数据都将保存到数据库中,并且一旦用户使用凭据登录,用户就可以声明数据的所有权。但是,这是使用我上面列出的这些功能的额外步骤,即使用户不需要任何东西,也不是每个人都对验证应用程序感到满意。再说了,鬼账号会这么多。

所以,正如我在标题中提到的那样;我想将所有内容保存到 IndexedDB(我会处理这个),但是如何在用户登录后立即将 IndexedDB 中的所有数据同步到 Firestore?

我想象的基本流程是这样的:

  1. 用户点击“收藏职位发布”
  2. 应用检查用户是否经过身份验证。
  3. 如果经过身份验证,请将书签保存到 Firestore。
  4. 如果未通过身份验证,请将书签保存到 IndexedDB。
  5. 如果用户决定登录或注册,请检查 IndexedDB 并将其与 Firestore 同步并清除 IndexedDB。

我怎样才能在技术上实现第五步? Firebase 中是否有任何内置系统?此外,如果您能想到实现此功能的另一种方式,请随时分享您的想法。我应该在第五步使用firebase.auth().onAuthStateChanged() 吗?

最后,我应该如何构建 Firestore 以保存已添加书签的职位、申请的职位和搜索历史?

我是否应该创建一个 bookmarkedJobs 集合并为每个用户复制 jobPosts 文档,这些用户为职位发布添加了书签?并且每次雇主更新职位信息时,我都会有一个云函数通过bookmarkedJobs 集合,更新它的每个实例?

谢谢

【问题讨论】:

    标签: firebase google-cloud-firestore react-redux indexeddb dexie


    【解决方案1】:

    您可能对此感兴趣 https://dexie.org/docs/Syncable/Dexie.Syncable.js

    一直在研究使我的网站完全静态/pwa,并且只使用 indexeddb 和一些用于数据处理/存储的 web 服务。这似乎是一条有趣的探索路线。

    猜你喜欢
    • 2014-04-16
    • 2012-10-11
    • 1970-01-01
    • 2012-03-02
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2016-03-31
    相关资源
    最近更新 更多