PouchDB检测未同步的文档

时间:2017-10-11 06:05:27

标签: javascript couchdb pouchdb

我正在尝试将本地PouchDB实例同步到远程CouchDB。事情很有效,但我不确定如何处理以下情况:

我在CouchDB中添加了一个验证规则以防止更新(它将拒绝所有更新)。当我在修改文档后在我的本地PouchDB实例上运行同步功能时,“拒绝”事件会像我期望的那样触发。但是,如果我第二次运行同步,则“拒绝”事件不会再次触发,即使本地文档与CouchDB版本不同。

如何检查本地数据库是否与远程数据库匹配?如果我第一次错过“拒绝”事件(假设用户关闭浏览器),我怎样才能在下次运行时检测到数据库不同步?如何强制PouchDB再次尝试再次修改已修改的文档,以便我可以看到被拒绝的事件?

谢谢!

syncPouch: function(){
  var opts = {};
  var sync = PouchDB.sync('orders', db.remoteDB, opts);
  sync.on('change', function (info) {});
  sync.on('paused', function(){
  });
  sync.on('active', function () {});
  sync.on('denied', function(err){
    //This only fire once no matter how many times I call syncPouch
    console.log("Denied!!!!!!!!!!!!");
    debugger;
  });
  sync.on('complete', function (info) {
    //This fires every time
    console.log("complete");console.log(info);
  });
  sync.on('error', function(err){
    debugger;
  });
  return sync;
},

1 个答案:

答案 0 :(得分:0)

我在validate_doc_update函数中注意到的是,PouchDb似乎将任何“被拒绝”文档视为同步。因此,即使您删除了validate_doc_update函数,在将来尝试时,文档也不会同步到远程数据库中,即使它不是相同的

因此,您可能会出现“不同步”情况,只能通过再次编辑其中一个文档来解决这个问题。

也许你看到了同样的事情?也许“拒绝”事件不会触发,因为PouchDb没有尝试同步文档(因为它之前已尝试同步它)?

相关问题