【问题标题】:PouchDB not syncing deletions when revs_limit is greater than 0当 revs_limit 大于 0 时 PouchDB 不同步删除
【发布时间】:2017-10-05 03:37:42
【问题描述】:

我有一个本地 pouchDB 任务。在我尝试与 IBM Cloudant noSQL 设置同步之前,它工作得很好。到目前为止的主要问题是 remove() 方法,我是这样写的:

$(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 为 0 的数据库时,它又可以工作了。

会发生什么?

【问题讨论】:

    标签: couchdb pouchdb


    【解决方案1】:

    当您从 Pouch 中删除文档时,底层操作类似于更新 - 更新包含必须同步回服务器的删除“墓碑”修订。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      相关资源
      最近更新 更多