我正在使用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...");
});
答案 0 :(得分:0)
也许尝试完整的事件处理程序: sync explained
}).on('complete', function (info) {
// handle complete
})
祝你好运
答案 1 :(得分:0)
根据我的有限经验,我将在第一次同步时触发加载动画,并在数据库同步暂停时停止动画。因此,当它检测到更改时,它将再次触发加载动画,
}).on('change', function (info) {
// trigger loading animation
}),并在同步暂停时停止动画。