【问题标题】:How to delete database to free storage in Pouchdb?如何删除数据库以释放 Pouchdb 中的存储空间?
【发布时间】:2016-12-22 12:34:50
【问题描述】:

我在删除数据库以释放存储空间时遇到问题。我已经尝试过 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);
  });

}

是不是代码错了。请指导我

【问题讨论】:

    标签: ionic-framework couchdb pouchdb


    【解决方案1】:

    压缩

    CouchDB 基于 B-Tree。每次更新文档时,都会创建一个新修订版。压缩会删除所有旧修订以清理空间,但不会清理 _deleted 文档。

    清除

    Purge 是 CouchDB 的一项功能,可以完全删除文档。这是不可逆的,目前 PouchDB 不支持。

    解决方案

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

    【讨论】:

    • 抱歉回复晚了。现在,我已经用破坏改变了它,它可以工作了。但问题是,当我想重新初始化它说错误时,无法读取 null 的属性 initializeTaskDB。有什么方法可以重新初始化数据库??
    • 如果你销毁一个,你创建一个新的?
    • 是的。我想用相同的名字重新创建。
    • 当你创建一个新的之后,你有错误吗?你在 delete() 函数完成后创建了吗?
    • 是的,当我调用 this.initializeTaskDB() 时,我的控制台出现错误,它说无法读取 null 的属性 initializeTaskDB。我想我是在删除完成后创建的。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多