我使用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()
被调用但是如果我删除了该文档,则不会调用该方法。
关于我做错了什么的任何线索?
答案 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();
}