我正在使用React、Redux和Firebase/Firestore为web构建一个作业门户。除了一个,我已经完成了我需要的所有功能。
我希望未注册的用户/求职者能够:
- 为作业帖子添加书签
- 保留申请工作的记录
- 保留搜索查询的记录
我正在考虑将IndexedDB用于此功能。特别是Dexie.js,让事情变得更容易。但是,这些数据将保留在用户的浏览器中,用户将无法在其他浏览器或设备中访问这些数据。因此,我想给用户一个选项,如果用户登录到网站,我可以将所有数据保存到Firestore,并且我需要这是自动的。所以,一旦用户登录,我就会将其保存到数据库中。
我考虑过使用匿名身份验证而不是IndexedDB/Firestore,这样所有数据都会保存到数据库中,一旦用户使用凭据登录,用户就可以声明数据的所有权。然而,这是使用我上面列出的这些功能的额外步骤,并不是每个人都乐于验证应用程序,即使用户不需要任何东西。此外,还会有那么多鬼账户。
所以,正如我在标题中提到的那样;我想把所有的东西都保存到IndexedDB(我会处理好的(,但如何在用户登录后立即将Indexed数据库中的所有数据同步到Firestore?
我想象的基本过程是这样的:
- 用户点击";书签作业贴">
- 应用程序检查用户是否经过身份验证
- 如果已通过身份验证,请将书签保存到Firestore
- 如果未通过身份验证,请将书签保存到IndexedDB中
- 如果用户决定登录或注册,请选中IndexedDB并将其与Firestore同步,然后清除IndexedDB
如何在技术上实现第五步?Firebase中有内置系统吗?此外,如果你能想出另一种实现此功能的方法,请随时分享你的想法。第五步我应该使用firebase.auth().onAuthStateChanged()
吗?
最后,我应该如何构建Firestore来保存书签作业、应用作业和搜索历史记录?
我是否应该创建一个bookmarkedJobs
集合,并为每个为职位帖子添加书签的用户复制职位帖子的文档?每次用人单位更新职位,我都会有一个云功能通过bookmarkedJobs
集合,更新它的每个实例?
谢谢
您可能对此感兴趣https://dexie.org/docs/Syncable/Dexie.Syncable.js
我一直在考虑让我的网站完全静态/pwa,只使用indexeddb和一些用于数据处理/存储的Web服务。。这似乎是一条有趣的探索之路。