PouchDb第一次同步onchange事件spaming

时间:2015-06-23 07:37:09

标签: javascript web-applications couchdb offline pouchdb

我正在使用pouch db开发一个离线网络应用程序。

第一次用户使用couch db启动应用程序本地数据库同步,并且onchange事件发送很多(37个文档为45次),因此我对这个事件有效的函数以错误的方式完成工作,因为本地数据库不完整,它也没有优化,因为我的功能完成了45次工作!在将完全复制到数据包db之前,onchange事件会触发很多次。

当数据与沙发数据库相同时,有没有办法知道本地数据库何时真正准备就绪?我正在使用实时更改选项。

我在本地数据库为空时首次启动时遇到此问题。

目前的解决方案(似乎很糟糕): 当加载所有更改时,我注意到连续两次暂停事件触发器,所以我检测到我的数据库是否已准备就绪:

var dbReady = false;

db.sync(remoteDb, options).on('paused', function () {

    if (!dbReady) {
        // Db not ready to use
        console.log("Pouch: Waiting...");
        dbReady = true;
    }
    else {
        // Db ready to use !
        console.log("Pouch: Ready...");
        // Some code...
    }

}).on('active', function () {
    console.log("Pouch: Syncing...");
    dbReady = false;

}).on('error', function () {
    console.log("Pouch: Offline...");
});

2 个答案:

答案 0 :(得分:0)

也许尝试完整的事件处理程序: sync explained

}).on('complete', function (info) {
     // handle complete
})
祝你好运

答案 1 :(得分:0)

根据我的有限经验,我将在第一次同步时触发加载动画,并在数据库同步暂停时停止动画。因此,当它检测到更改时,它将再次触发加载动画,

}).on('change', function (info) {
 // trigger loading animation

}),并在同步暂停时停止动画。