【问题标题】:Using Couchbase Lite and Sync Gateway, how to have documents from revoked channels removed?使用 Couchbase Lite 和 Sync Gateway,如何删除已撤销频道中的文档?
【发布时间】:2017-11-29 02:15:27
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: couchbase-lite couchbase-sync-gateway


    【解决方案1】:

    文档被分配到频道。用户可以访问频道。

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

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

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

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

    【讨论】:

      【解决方案2】:

      您可以创建一个 Webhook 服务,该服务可以在删除文档时运行,并将其作为 Lambda 服务或类似的东西运行,或者在您自己的应用程序服务器上运行。每当删除文档时,您都可以从 sync_gateway 用户中删除通道。 couchbase 同步网关的 webhook 文档,参考这里:https://developer.couchbase.com/documentation/mobile/current/guides/sync-gateway/server-integration/index.html

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

      【讨论】:

      • 这种方法的痛点是我想删除 Couchbase Lite 上的文档,而不是 Couchbase Server。
      猜你喜欢
      • 2014-06-08
      • 2018-11-26
      • 2016-03-28
      • 2019-12-20
      • 2016-02-03
      • 2018-02-11
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      相关资源
      最近更新 更多