CouchDB 读取限制

CouchDB read restriction

我有一个应用程序,我想在其中实施 chat/messaging 服务。我必须将 CouchDB 与 PouchDB 一起使用。我的问题是每个用户都应该能够向任何人发送消息,但只有消息的接收者可以阅读它,但是 CouchDB 中没有办法限制每个用户阅读对话文档。每个用户的数据库也不是解决方案,因为没有办法让每个人都写入相应的数据库。

CouchDB 和 PouchDB 没有针对每个文档的访问控制,只有每个数据库。一种解决方案是:

  • 用于驻留在服务器上的已发送邮件的单一数据库。 PouchDB 客户端通过执行客户端-> 服务器单向复制写入(但不读取)该数据库。
  • 服务器端每个用户一个数据库,使用服务器-> 客户端单向复制。这就是 PouchDB 客户端接收消息的方式。
  • 在服务器端,编写一些自定义脚本以根据收件人将文档从中央数据库移动到每个用户的数据库

这与我在 blog post about bus station displays 中概述的方法类似,后者使用无服务器更改提要侦听器来路由消息。这并不理想,但却是一种解决方案。