2017-10-11 52 views
0

我试图将本地PouchDB实例同步到远程CouchDB。事情很好,但我不知道如何处理以下情况:PouchDB检测未同步的文档

我已经在CouchDB中添加了一个验证规则来阻止更新(它会拒绝所有更新)。在修改文档后,当我在本地PouchDB实例上运行同步功能时,“denied”事件会像我预期的那样触发。但是,如果我再次运行同步,即使本地文档与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; 
}, 

回答

0

我有validate_doc_update功能注意到的是,PouchDb出现治疗任何“拒绝”文档同步编辑。因此,即使您删除了validate_doc_update函数,该文档也不会在未来尝试时同步到远程数据库中,即使它不是相同的

所以你可以留下一个“不同步”的情况,只能通过再次编辑其中一个文件来解决。

也许你看到相同的东西?也许“拒绝”事件不会触发,因为PouchDb没有尝试同步文档(因为它以前已经试图同步它)?