语境
我使用PouchDB,并使用indexedDb拥有一个localDB。我使用此功能将本地数据库连续复制到远程数据库(CouchDB):
function replLocalToRemote() {
this.meta.localDB.replicate.to(this.meta.remoteDB, {
// Live: replication occurs as the changes are detected
live: true,
retry: true,
}).on('paused', function (info) {
console.log('paused', info);
// replication was paused, usually because of a lost connection
}).on('change', function (change) {
console.log('change', change);
// yo, something changed!
}).on('active', function (info) {
console.log('active', info);
// replication was resumed
}).on('error', function (err) {
alert('replication failed. Retry... ', err);
// totally unhandled error (shouldn't happen)
});
}
它运行良好,但是当设备上的数据过多时会出现问题。尤其是在Safari不断打开弹出式窗口以要求更多数据存储(从5Mo开始)的IOS上。
题
所以我想在将localDB复制到remoteDB时对其进行清理。例如,删除本地上的文档后,立即将其删除,然后继续复制,即使远程上的数据多于本地上的数据。
这可能吗?
最佳答案
删除本地文档会给您带来麻烦,因为删除操作将被复制到远程数据库中,从而使您完全丢失该文档。
您是否在PouchDb中看到“自动压缩”功能?通过删除任何“非叶子”修订文档(以前的版本),可以最大程度地减少本地数据库的大小。
您可以启用此功能,如下所示:
var db = new PouchDB('mydb', {auto_compaction: true});
有关此的更多信息,请参见the PouchDb page。
关于javascript - PouchDB:在remoteDB上安全时清除localDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41550177/