从CouchDB和Couchbase-lite同步并删除已删除的文档

时间:2018-06-17 18:20:11

标签: couchbase couchbase-lite couchbase-sync-gateway couchbase-java-api

我目前正在iOS和Android应用程序中使用couchbase-lite来同步来自运行CouchDB的数据库中的文件。

我经常删除不再需要的文件,我希望从移动应用程序中删除相同的文件,但任何拉动复制只会提取更新或新文件,并且不会触发删除移动应用。

如果没有对移动应用程序进行完全清除,然后重新同步整个数据库,有没有办法从移动应用程序中删除不再位于服务器数据库上的文档?

2 个答案:

答案 0 :(得分:0)

在数据库类中,有一个purgeDocument()方法。这将从本地数据库中删除目标文档-目标文档的服务器副本保持不变。如果该文档以后被更新,则该文档将在下一次复制时返回到本地客户端。

http://docs.couchbase.com/mobile/2.1/couchbase-lite-swift/Classes/Database.html

答案 1 :(得分:0)

您可以基于id从数据库中删除文档,如下所示:

try {
        for (Result result : docList) {
            String id = result.getString(0);
            Document doc = database.getDocument(id);
            database.delete(doc);
        }
    } catch (CouchbaseLiteException e) {
        e.printStackTrace();
    } 

要获取文档ID,您必须查询以下内容:

Query query = QueryBuilder
    .select(SelectResult.expression(Meta.id), SelectResult.all())
    .from(DataSource.database(database))

ResultSet rs = query.execute();
    for (Result result : rs) {
        Dictionary data = result.getDictionary("db_name");
        Log.e("CouchbaseLite ", "document: " + data);
        Log.e("CouchbaseLite ", "id: " + result.getString(0));
    }