使用Couchbase Lite和Sync Gateway,如何删除已撤销频道中的文档?

时间:2017-06-26 09:11:06

标签: couchbase-lite couchbase-sync-gateway

我正在客户端使用Couchbase Lite开发应用程序,在服务器端开发Couchbase Sync Gateway。

在服务器端,我管理"访问授权"文档。当创建这样的文档时,该文档中给出的用户被授予对频道的访问权。显然,当删除这样的文档时,撤销访问授权。确实如此,除了一点之外。

假设我有一个文档发布在我的用户被授予访问权限的频道中。然后我删除了该文件。根据Couchbase文档,删除文档后,用户无法再访问访问授权中表示的频道。

不幸的是,发布到该频道的文档已经与用户couchbase lite DB同步。因此我的问题是:我希望从couchbase lite中删除与用户无法访问的频道相关联的文档。但是我该怎么做呢?似乎复制或lvie查询都不允许这样做。那么,是否有一种特定的机制可以让我接受这种事件?是否有我还不知道的API?

2 个答案:

答案 0 :(得分:1)

将文档分配给频道。用户可以访问频道。

如果从频道中删除文档,则会将此事件同步到客户端。

目前,不支持通知客户已失去对文档的访问权限,因为它已失去从频道读取的权限。

这是一个难题。例如,由于文档可能被分配给许多频道,因此撤销对频道(甚至一组频道)的访问并不意味着客户端不再能够访问该文档。

要了解解决此问题的两种可能方法,请参阅this GitHub issue comment series

答案 1 :(得分:0)

您可以创建一个webhook服务,该服务可以在删除文档时运行,并以Lambda服务或类似的方式运行,也可以在您自己的应用程序服务器上运行。每当删除文档时,您都可以从sync_gateway用户中删除该频道。 有关couchbase同步网关的webhook文档,请参阅:https://developer.couchbase.com/documentation/mobile/current/guides/sync-gateway/server-integration/index.html

我知道这是一个更长的过程,应该有更好的方法来做到这一点,但是,这是我能想到的唯一解决方案。