语境

我使用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/

10-11 13:43