我正在尝试将本地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;
},
答案 0 :(得分:0)
我在validate_doc_update函数中注意到的是,PouchDb似乎将任何“被拒绝”文档视为同步。因此,即使您删除了validate_doc_update函数,在将来尝试时,文档也不会同步到远程数据库中,即使它不是相同的。
因此,您可能会出现“不同步”情况,只能通过再次编辑其中一个文档来解决这个问题。
也许你看到了同样的事情?也许“拒绝”事件不会触发,因为PouchDb没有尝试同步文档(因为它之前已尝试同步它)?