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