使用Couchbase Lite和Sync Gateway,如何从撤销的渠道中删除文档?
我在客户端使用Couchbase Lite开发应用程序,在服务器端使用Couchbase Sync Gateway。使用Couchbase Lite和Sync Gateway,如何从撤销的渠道中删除文档?
在服务器端,我管理“访问授权”文档。当创建这样的文档时,该文档中给出的用户被授权访问频道。显然,当这样的文件被删除时,访问授权被撤销。事实确实如此,除了一点。
假设我有一个文档发布在我的用户被授权访问的频道中。然后我删除文件。根据Couchbase文档,一旦文档被删除,用户就无法再访问访问授权中指定的频道。
不幸的是,发布到该频道的文档已经与用户的couchbase lite数据库同步。因此我的问题是:我希望将与用户没有更多访问权的频道相关的文档从couchbase lite中删除。但我该怎么做?似乎复制或lvie查询都不能允许这样做。那么,是否有一个特定的机制可以让我接受这种事件?有没有我不知道的API?
文档被分配到通道。用户可以访问频道。
如果文档从通道中删除,则该事件将同步到客户端。
目前不支持通知客户端它已失去对文档的访问权限,因为它失去了从频道读取的权限。
这是一个难题。例如,由于可以将文档分配给多个通道,因此撤销对通道(甚至一组通道)的访问并不意味着客户端不再能够访问该文档。
要了解解决此问题的两种可能方法,请参阅this GitHub issue comment series。
您可以创建一个webhook服务,该服务可以在删除文档时运行,并作为Lambda服务或类似的东西运行,或者在您自己的应用程序服务器上运行。无论何时删除文档,您都可以从sync_gateway用户删除频道。 对于couchbase同步网关的网络挂接文档,请点击这里:https://developer.couchbase.com/documentation/mobile/current/guides/sync-gateway/server-integration/index.html
我知道这是一个较长的过程,应该有更好的方式来做到这一点,但是,这是我能想到的唯一解决方案。
这种方法的难点在于我想删除Couchbase Lite上的文档,而不是Couchbase Server上的文档。 – Riduidel