如何在Pouchdb中删除数据库以释放存储空间?

时间:2016-12-18 03:50:59

标签: ionic-framework couchdb pouchdb

我有删除数据库的问题,以免存储空间。我已经尝试过此How can I delete PouchDB Database indefinitly, to free space?https://pouchdb.com/guides/compact-and-destroy.html的解决方案,但它无法解决我的问题。我已经使用compact()函数来清除以前的用户数据,但是当我尝试同步新的用户数据时,其他用户的旧数据不会被删除。例如,用户A有3个数据,用户B有2个数据。首先,我从用户A获取数据,然后我正确地获得了3个数据的数据。然后,当我想从用户B获取数据时,我得到5个数据,这意味着来自用户A的数据不会被删除/删除。以下是我的代码:

uuid.ts

retriveTaskRefNo(url, uuid, cb){
  //get reference item based on uuid
  HTTP.get(url+'/get_item', {uuid: uuid}, {})
  .then(data => {
    //call the function removeData() in uuid.ts
    this.removeData(() => {
      //save reference item
      this.settingProvider.setInfo(data.data, () => {
        cb();
      });
    })
  })

}

//call the removeData() in itemProvider.ts
removeData(cb){
  this.itemProvider.resetDB(() => {
  });
}

itemProvider.ts

constructor(public http: Http, public settingProvider: SettingProvider) {

  this.initializeTaskDB();

}

initializeTaskDB(){

  this.db = new PouchDB('item');
  console.log('Database created Success!');
}

//function to clear database
resetDB(cb){

  if(this.sync){
    console.log('Cancelling sync for InspectionTask due to removeData');
    this.sync.cancel();
  }

  this.db.destroy().then(function (response) {
    console.log('success delete inspection task');
    this.initializeTaskDB();

  }).catch(function (err) {
    console.log('eror',err);
  });

}

代码是错误的吗?请指导我

1 个答案:

答案 0 :(得分:1)

<强>压实

CouchDB基于B树。每次更新文档时,都会创建一个新版本。压缩将删除所有旧版本的清理空间,但不会清除_deleted文档。

<强>清除

Purge是CouchDB的一个完全删除文档的功能。它是不可逆转的,目前还不支持PouchDB。

解决方案

在PouchDB中清除数据库的唯一方法是使用destroy