【发布时间】:2021-01-03 10:00:10
【问题描述】:
我正在使用 React、Redux 和 Firebase/Firestore 为网络构建一个工作门户。我已经完成了我需要的所有功能,除了一个。
我希望未注册用户/求职者能够:
- 为招聘职位添加书签。
- 保留应聘职位的记录。
- 保留搜索查询记录。
我正在考虑将 IndexedDB 用于此功能。特别是 Dexie.js 让事情变得更容易。但是,此数据将保留在用户的浏览器中,用户将无法在其他浏览器或设备中访问它。因此,如果用户登录网站,我想为用户提供一个选项,以便能够将所有数据保存到 Firestore,我需要这是自动的。因此,一旦用户登录,我就会将其保存到数据库中。
我考虑过使用匿名身份验证而不是 IndexedDB/Firestore,因此所有数据都将保存到数据库中,并且一旦用户使用凭据登录,用户就可以声明数据的所有权。但是,这是使用我上面列出的这些功能的额外步骤,即使用户不需要任何东西,也不是每个人都对验证应用程序感到满意。再说了,鬼账号会这么多。
所以,正如我在标题中提到的那样;我想将所有内容保存到 IndexedDB(我会处理这个),但是如何在用户登录后立即将 IndexedDB 中的所有数据同步到 Firestore?
我想象的基本流程是这样的:
- 用户点击“收藏职位发布”
- 应用检查用户是否经过身份验证。
- 如果经过身份验证,请将书签保存到 Firestore。
- 如果未通过身份验证,请将书签保存到 IndexedDB。
- 如果用户决定登录或注册,请检查 IndexedDB 并将其与 Firestore 同步并清除 IndexedDB。
我怎样才能在技术上实现第五步? Firebase 中是否有任何内置系统?此外,如果您能想到实现此功能的另一种方式,请随时分享您的想法。我应该在第五步使用firebase.auth().onAuthStateChanged() 吗?
最后,我应该如何构建 Firestore 以保存已添加书签的职位、申请的职位和搜索历史?
我是否应该创建一个 bookmarkedJobs 集合并为每个用户复制 jobPosts 文档,这些用户为职位发布添加了书签?并且每次雇主更新职位信息时,我都会有一个云函数通过bookmarkedJobs 集合,更新它的每个实例?
谢谢
【问题讨论】:
标签: firebase google-cloud-firestore react-redux indexeddb dexie