【问题标题】:How to show and replicate documents for certain users and roles only?如何仅为某些用户和角色显示和复制文档?
【发布时间】:2017-08-02 05:06:58
【问题描述】:

我正在使用 couchdb 和 pouchdb 构建一个协作应用程序。

我想实现一个日历功能。

假设有一个像“秘密会议”这样的事件,涉及用户 Jessica 和 James,因此该事件应该只有 Jessica 和 James 才能读取、更新和复制功能。 或者,假设我有一个像“大会”这样的活动,它应该只为所有当前(和未来!)具有“办公室”角色的用户提供阅读、编辑和复制功能。

我知道 couchdb 中没有每个文档的访问控制。 我还阅读了有关使用“代理服务器”的信息,但我不明白它们是如何工作的。

我阅读了很多关于使用“每个用户一个文档”的信息。 那么,如何使每个数据库中的文档保持同步呢? 我可以为每个事件创建一个数据库,但是如何查询显示我所有事件的视图?我是否还必须为每个角色保留一个数据库?

这是当今每个网络应用程序最常见的用例! 想想 Facebook,想想 Whatsapp,每一个聊天应用程序。

如果不能限制对某些文档的访问,应该如何使用 CouchDB?

【问题讨论】:

  • 你有链接到这个吗:stackoverflow.com/questions/30295304/…
  • 那个帖子没有答案,跑题了。
  • 我认为您的意思是“每个用户一个数据库”而不是“每个用户一个文档”。此外,CouchDB 确实允许按文档访问,但必须使用设计文档进行设置。
  • @Flimzy 它不允许对每个文档进行读取访问。你在哪里读到的?

标签: couchdb replication acl pouchdb nosql


【解决方案1】:

是的,您应该为每个用户创建一个数据库,您将使用 filtered replication 将与该用户相关的所有事件文档或该用户所属的角色放入每个数据库,然后将整个数据库复制到用户的 PouchDB。

【讨论】:

    【解决方案2】:

    我最终为我的数据库开发了一个代理服务器,它位于我的主数据库前面并过滤数据。它有自己的端口并在端口 5984 上查询 Couchdb 以获得权​​限。为此,我使用了 nodejs 和 Nano couchDB 适配器。

    【讨论】:

    • 我很困惑。如果你能详细说明你是如何解决这个问题的,我将不胜感激,因为我也在使用 nodejs 和 Nano。
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多