0

如果数据库名称是 LokiCatalog,有什么方法可以从科尔多瓦应用程序的 chrome 控制台中删除 indexedDB?

4

2 回答 2

1

是的,您可以使用 indexeddb api“deleteDatabase”删除它。所以删除数据库“LokiCatalog will be”的代码 -

var DBDeleteRequest = window.indexedDB.deleteDatabase("LokiCatalog");

DBDeleteRequest.onerror = function(event) {
  console.log("Error deleting database.");
};

DBDeleteRequest.onsuccess = function(event) {
  console.log("Database deleted successfully");

  console.log(event.result); // should be undefined
};

有关更多信息,您可以在这里查看 - https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory/deleteDatabase

如果您不想处理 indexeddb api,可以使用一些 indexeddb 包装器,例如 - JsStore

于 2017-10-25T05:27:48.057 回答
0

indexedDB.deleteDatabase可以删除 IndexedDB 数据库,只需确保您正在侦听所有事件,这样您就会在数据库被阻止或其他情况下收到通知。

deleteDatabase这是一个监听所有事件的承诺版本的示例。

function deleteDb(dbName) {
    return new Promise((resolve, reject) => {
        const deleteDbRequest = indexedDB.deleteDatabase(dbName);
        deleteDbRequest.addEventListener('error', (e) => {
            console.log('delete error', e);
            reject(e);
        });
        deleteDbRequest.addEventListener('blocked', (e) => {
            console.log('delete blocked', e);
            reject(e);
        });
        deleteDbRequest.addEventListener('upgradeneeded', (e) => {
            console.log('delete upgradeneeded', e);
            reject(e);
        });
        deleteDbRequest.addEventListener('success', (e) => {
            console.log('delete success', e);
            resolve(e);
        });
    })
}

这只是一个例子。例如,您可能希望对事件采取不同的行为(即不一定rejectupgradeneeded

示例用法:

deleteDb('LokiCatalog')
    .then(r => console.log('success', r))
    .catch(e => console.error('oops', e));
于 2021-07-09T22:10:02.690 回答