【问题标题】:Sync Gateway doesn't delete Documents after successful Syncing and Android App is catching up Documents同步成功后,同步网关不删除文档,Android App 正在赶上文档
【发布时间】:2019-08-22 04:18:51
【问题描述】:
在将文档添加到 Couchbase 服务器时,同步网关会清除所有文档吗?
例如,我从我的 Android 应用程序中添加了一个文档,它将文档添加到同步网关服务器,同步网关将它转发到 Couchbase 服务器。 Sync Gateway 不应该在添加到 Couchbase 服务器时清理/删除文档并且不再需要它吗?
除此之外,我的 Android 应用程序还在移动设备上缓存文档。例如,如果我重新启动 Sync Gateway Server,则 Sync Gateway Server 中没有文档。现在,当我从我的移动应用程序向同步网关再进行一次文档推送时。它将以前的文档添加到同步网关服务器。如何在我的 Android 设备上阻止这种行为?
【问题讨论】:
标签:
android
couchbase
couchbase-lite
couchbase-sync-gateway
【解决方案1】:
不应同步网关清理/删除文档,因为它已添加到
不再需要 Couchbase Server 了吗?
没有。您的应用程序是知道何时不再需要文档的实体,因此,应用程序有责任在不需要时删除文档。 Sync Gateway 是一个同步网关,这意味着它在执行适当的访问控制策略的同时在客户端和服务器之间同步文档。它无法管理您 Android 设备上的数据 - 这是包含 Couchbase Lite 数据库的 Android 应用程序的责任。
要在将文档推送到同步网关后从您的 Android 应用程序中删除它,您可以在 replicated eventing 回调中调用 Purge API。一旦你被通知你的应用已经推送了文档,你就可以在本地清除它。
除此之外,我的 Android 应用程序还缓存了
移动设备上的文档。例如,如果我重新启动同步
网关服务器,同步网关服务器中没有文档。
我建议您熟悉Couchbase Mobile 工作原理的基础知识。
Couchbase Lite 是一个嵌入式数据库。它将保留您写入它的数据,因此,它将在重新启动后继续存在。如果您不想在本地存储数据,请按照我之前指出的步骤操作。
同步网关仅限内存。数据不存储在 Sync Gateway 中。数据保存在 Couchbase 服务器中。因此,当您重新启动同步网关时,它会丢失其内存缓存。下一次,有来自客户端的复制/同步请求,它将从 Couchbase 服务器中提取文档。重新启动 Sync Gateway 时,您永远不会丢失任何数据。