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

时间:2017-03-12 00:34:30

标签: couchdb replication acl pouchdb nosql

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

我想实现日历功能。

假设有一个类似“秘密会议”的事件涉及用户Jessica和James,因此该事件应该只对Jessica和James有读取,更新和复制功能。 或者,比方说,我有一个像“一般会议”这样的事件,它应该只对所有具有“办公室”角色的当前(和FUTURE!)用户具有读取,编辑和复制功能。

我知道couchdb中没有per-document-access控件。 我还读到了使用“代理服务器”,但我不明白它们是如何工作的。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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