无法删除本地数据库CouchBase lite中的文档

时间:2018-05-14 10:21:42

标签: android couchdb couchbase-lite

我使用CouchBase Lite 1.3 Android而不是CouchDB 1.6

如果我在CouchDB上删除文档,则不会在我的设备本地复制数据库中删除该文档。

这是我的代码:

  private Database master;
    private Manager manager;
    public Replication pullmaster;

    manager = new Manager(new AndroidContext(c), Manager.DEFAULT_OPTIONS);
    master = manager.getDatabase("master");
    pullmaster = master.createPullReplication(url);

     master.addChangeListener(new Database.ChangeListener() {
                    @Override
                    public void changed(Database.ChangeEvent event) {
                        if (event.isExternal()) {
                            for (DocumentChange dc : event.getChanges()) {

                                if (dc.isDeletion()) {
                                    Document doc = event.getSource().getDocument(dc.getDocumentId());
                                    try {
                                        doc.purge();
                                    } catch (CouchbaseLiteException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
                        }
                    }
                });

  startReplicators();

在这里,我开始复制

public void startReplicators() {
        if (pullmaster != null) {
            pullmaster.start();
        }
        if (pullwork != null) {
            pullwork.start();
        }
        if (pushwork != null) {
            pushwork.start();
        }
    }

它不起作用,我的意思是它不删除我在CouchDb中删除的文档,没有错误。

我在这一行上设置了一个断点

  

master.addChangeListener(new Database.ChangeListener(){....}

如果我在CouchDB中创建文档addChangeListener()被调用但是如果我删除了该文档,则不会调用该方法。

关于我做错了什么的任何线索?

1 个答案:

答案 0 :(得分:0)

在Couchbase Lite 2.7.0版中,您可以基于res.send({ status_code: 1000, data: [{ version: "2.2", url: `${PUBLIC_URL}/ocpi/2.2` }], timestamp: new Date() }) 从数据库中删除文档,如下所示:

id

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

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