当Revs_limit大于0时,pouchdb不同步删除



我有一个本地任务。在我尝试与IBM Cloudant Nosql建立同步之前,工作得很好。到目前为止,主要问题是删除((方法,我这样写了:

$(document).on("click","#taskList li .delete", function(){
    db.remove(id,rev);
    refreshTasks();
});

当同步关闭时,该方法可以很好地工作,但是一旦我激活下面的行,它就不会从本地和远程删除任务。我正在与此代码同步pouchdb:

db.sync(remote_db, {
  live: true,
  retry: true
}).on('change', function (change) {
  // yo, something changed!
}).on('paused', function (info) {
  // replication was paused, usually because of a lost connection
}).on('active', function (info) {
  // replication was resumed
}).on('error', function (err) {
  // totally unhandled error (shouldn't happen)
});

我的数据库是由此创建的:

var db = new PouchDB('tasks', {revs_limit: 1, auto_compaction: true});

现在,当我使用revs_limit创建数据库时,它再次工作。

可能会发生什么?

从袋中删除文档时,基础操作类似于更新 - 更新包含删除"墓碑"修订版,必须将其同步回到服务器。

通过设置revs_limit:1,本地数据库只能跟踪每个文档的最新修订版,包括此删除,因此当同步发生时,它将不知道将删除附加到哪个父修订。这不是Couch/Cloudant中的错误条件 - 它将仅在服务器上创建一个冲突的文档。

我建议在不更改默认revs_limit的情况下创建数据库。确实,唯一有意义的情况是当您拥有不变的文档时 - 即永远不会更新/删除它们。

最新更新