2016-12-18 2 views
1

У меня есть проблема с удаленной базой данных, чтобы сделать хранилище свободным. Я уже пробовал решение из этого 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 не удаляются/удаляются. Ниже мой код:Как удалить базу данных в свободное хранилище в Pouchdb?

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

Уплотнительная

CouchDB основан на B-Tree. Каждый раз, когда вы обновляете документ, он создает новую версию. Уплотнение удаляет все старые исправления для очистки пространства, но не очищает документы, удаленные.

Purge

Purge является функцией от CouchDB, что полностью удалить документ. Это необратимо и не поддерживается PouchDB на данный момент.

Решение

Единственный способ очистить базу данных в PouchDB является использование destroy.

+0

Извините за поздний ответ. Теперь я уже изменяю его с помощью destroy, и он работает. Но проблема в том, что когда я хочу повторно инициализировать эту ошибку, не могу прочитать свойство initializeTaskDB из null. Есть ли способ повторно инициализировать базу данных? – Akmal

+0

Если вы уничтожаете один, вы создаете новый? –

+0

Да. Я хочу воссоздать с тем же именем. – Akmal