2017-10-11 77 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沒有嘗試同步文檔(因爲它以前已經試圖同步它)?