如果数据库名称是 LokiCatalog,有什么方法可以从科尔多瓦应用程序的 chrome 控制台中删除 indexedDB?
问问题
840 次
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);
});
})
}
这只是一个例子。例如,您可能希望对事件采取不同的行为(即不一定reject
)upgradeneeded
。
示例用法:
deleteDb('LokiCatalog')
.then(r => console.log('success', r))
.catch(e => console.error('oops', e));
于 2021-07-09T22:10:02.690 回答