我正在设计一个用于任务管理的移动应用程序(待办事项列表以及许多额外的好东西),可以脱机使用并在重新连接时同步。我对Couch和Pouch DB印象深刻,但我仍然不确定数据库和角色的最佳结构。我的情况是,用户可以拥有许多任务,任务可以直接或通过将任务分配给组,然后与特定用户共享该组,与许多其他用户(只读)共享。
阅读以下问题后: CouchDB replication strategy with dynamic groups of users我想我可能不允许直接分享任务,只允许通过群组共享。然后每个小组实际上在Couch中扮演一个角色,然后我可以管理授权。我可以从我的web-app编写API,以便移动用户可以获得与他们共享的组列表,然后设置从每个基于数据库的组到其本地Pouch DB的单向复制。每个用户还可以通过从Pouch到Couch的双向同步,对自己任务的DB进行读写访问。将有一个从他们自己的Couch DB到该任务所属的每个基于角色的DB的过滤复制。
我的主要问题是:
答案 0 :(得分:1)
很棒的问题,保罗!这似乎最近不断出现。 :)
这是一个有效的结构,还是我的逻辑中有缺陷会导致这种困难?
我是这么认为的。我发布了一个architecture diagram作为类似移动设备(在这种情况下为Cordova + PouchDB)工作流程的答案。
当用户从组/角色中删除时,处理用户的最佳方法是什么,以及如何删除其本地Pouch DB上以前复制的任务,因为该组不再与他们共享(他们不再拥有该组)角色)?
可能最好的路线是在用户的数据库上使用View来查找与共享/组相关的所有文档,然后使用后台进程(或某些类似的)来删除这些文档(以节省空间) ;如果你需要)。
您可以使用批量文档系统in PouchDB or CouchDB并在文档上设置"_deleted": true
- 这应该简化删除过程。
用户可能会删除一个组,这意味着需要删除整个基于角色的数据库 - 是否有任何影响?
确保还删除复制任务以避免数据库消失后的重复失败。否则,你应该没事(据我所知)。
希望有所帮助!