Couchdb 按用户角色划分的Coach DB/Pocket DB复制策略

Couchdb 按用户角色划分的Coach DB/Pocket DB复制策略,couchdb,pouchdb,Couchdb,Pouchdb,我正在设计一款用于任务管理的移动应用程序(待办事项列表加上许多额外的好东西),可以离线使用,重新连接时可以同步。我对coach和pagg数据库印象深刻,但仍然不确定数据库和角色的最佳结构。我的情况是,一个用户可以有许多任务,并且可以直接或通过将任务分配给组,然后与特定用户共享该组,将任务共享给许多其他用户(只读) 看完以下问题后: 我想我可能不允许直接分享任务,只允许通过小组分享。然后,每个组实际上都是coach中的一个角色,我可以对其进行授权。我可以从我的web应用程序中编写API,以便移动用

我正在设计一款用于任务管理的移动应用程序(待办事项列表加上许多额外的好东西),可以离线使用,重新连接时可以同步。我对coach和pagg数据库印象深刻,但仍然不确定数据库和角色的最佳结构。我的情况是,一个用户可以有许多任务,并且可以直接或通过将任务分配给组,然后与特定用户共享该组,将任务共享给许多其他用户(只读)

看完以下问题后: 我想我可能不允许直接分享任务,只允许通过小组分享。然后,每个组实际上都是coach中的一个角色,我可以对其进行授权。我可以从我的web应用程序中编写API,以便移动用户可以获得共享给他们的组列表,然后设置从每个基于DB的组到其本地Pocket DB的单向复制。每个用户还可以通过从小袋到沙发的双向同步,对自己任务的数据库进行读写访问。将有一个从他们自己的coach数据库到任务所属的每个基于角色的数据库的过滤复制

我的主要问题是:

  • 这是一个有效的结构,还是我的逻辑中存在使这一点变得困难的缺陷
  • 当用户从组/角色中删除时,最好的处理方法是什么?当组不再与他们共享(他们不再具有该角色)时,如何删除其本地Pocket DB上以前复制的任何任务
  • 用户可能会删除一个组,这意味着需要删除整个基于角色的数据库-这有什么影响吗

  • 问得好,保罗!这似乎最近一直在发生。:)

    这是一个有效的结构,还是我的逻辑中存在使这一点变得困难的缺陷

    我想是的。我在一个类似的以移动为中心的工作流程(在这种情况下是Cordova+PockDB)上发布了一个答案

    当用户从组/角色中删除时,最好的处理方法是什么?当组不再与他们共享(他们不再具有该角色)时,如何删除其本地Pocket DB上以前复制的任何任务

    最好的方法可能是使用用户数据库的视图查找与共享/组相关的所有文档,然后使用后台流程(或类似流程)删除这些文档(以节省空间;如果需要)

    您可以使用批量文档系统,在文档上设置
    “\u deleted”:true
    ,这将简化删除过程

    用户可能会删除一个组,这意味着需要删除整个基于角色的数据库-这有什么影响吗

    只需确保删除复制任务,以避免在数据库消失后复制失败。否则,你会没事的(据我所知)


    希望有帮助

    谢谢@BigBlueHat。这很有帮助,我想我现在有足够的时间继续下去了。希望我能让一切顺利,我会在完成后张贴一张最终设计图。谢谢!这将是伟大的看到,并可能帮助其他人。快乐编码!