如何仅为特定用户和角色显示和复制文档?

How to show and replicate documents for certain users and roles only?

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

我想实现日历功能。

假设有一个像 "secret meeting" 这样的事件涉及用户 Jessica 和 James,因此该事件应该只对 Jessica 和 James 具有读取、更新和复制功能。 或者,比方说,我有一个像 "general meeting" 这样的事件,它应该只对所有当前(和未来!)具有角色 "office" 的用户具有读取、编辑和复制功能。

我知道在 couchdb 中没有每个文档的访问控制。 我还阅读了有关使用 "proxy servers" 的内容,但我不明白它们是如何工作的。

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

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

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

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

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