首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除所有indexedDB

删除所有indexedDB
EN

Stack Overflow用户
提问于 2017-09-04 23:16:42
回答 3查看 9.7K关注 0票数 12

我需要删除我所有的IndexedDB,目前我有:

代码语言:javascript
复制
const indexedDB = window.indexedDB || window.mozIndexedDB
  || window.webkitIndexedDB || window.msIndexedDB;
if (indexedDB.webkitGetDatabaseNames) {
  const bases = indexedDB.webkitGetDatabaseNames();
  bases.onsuccess = (event) => {
    const data = event.target.result;
    Object.values(data).forEach((db) => {
      indexedDB.deleteDatabase(db);
    });
    resolve();
  };
  bases.onerror = reject;
}

但是webkitGetDatabaseNames()函数是未定义的。是否可以在不使用此方法的情况下删除所有IndexedDB?

PD:我想在不知道IndexedDB名称的情况下删除,我需要从代码中删除(Javascript)

EN

回答 3

Stack Overflow用户

发布于 2019-02-19 18:34:33

在铬合金上使用

代码语言:javascript
复制
window.indexedDB.databases().then((r) => {
    for (var i = 0; i < r.length; i++) window.indexedDB.deleteDatabase(r[i].name);
}).then(() => {
    alert('All data cleared.');
});
票数 11
EN

Stack Overflow用户

发布于 2017-09-04 23:37:41

用于获取名称indexedDB.webkitGetDatabaseNames的函数调用已弃用。请参阅下面的参考:

https://github.com/dfahlander/Dexie.js/issues/532

还有一种意图是弃用: IDBFactory webkitGetDatabaseNames

https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/2fUr-3wFPKI/discussion

您可以使用以下技术来删除数据库:

代码语言:javascript
复制
Technique 1:

据我所知,应该使用indexedDB.deleteDatabase

代码语言:javascript
复制
var req = indexedDB.deleteDatabase(databaseName);
req.onsuccess = function () {
    console.log("Deleted database successfully");
};
req.onerror = function () {
    console.log("Couldn't delete database");
};
req.onblocked = function () {
    console.log("Couldn't delete database due to the operation being blocked");
};

我可以确认它可以在PhantomJS 1.9.0和Chrome26.0.1410.43上运行。

代码语言:javascript
复制
Technique 2

从理论上讲,要删除Chrome中的IndexedDB,您只需:

  1. 在Chrome中,转到选项>在主页下>内容设置>所有cookies和站点数据>找到您创建IndexedDB
  2. 的域名,单击"X“或单击”索引数据库“>移除

在Windows中,该文件位于以下位置:

%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\IndexedDB

在Mac上,执行以下操作:

  1. 在Chrome中,转到“设置”(或Chrome菜单下的“首选项”)
  2. 单击“显示高级设置”(在页面底部)
  3. 转到“隐私”>“内容设置”>“所有cookies和站点数据”>找到您创建cookies的域名"X“或单击”索引数据库“>移除

在Mac上,该文件夹位于以下位置:

代码语言:javascript
复制
/Users/[USERNAME]/Library/Application Support/Google/Chrome/Default/IndexedDB/

在Linux上,该文件夹位于:

代码语言:javascript
复制
/home/[USERNAME]/.config/google-chrome/Default/IndexedDB/
票数 6
EN

Stack Overflow用户

发布于 2021-07-11 22:01:21

代码语言:javascript
复制
indexedDB.databases().then(dbs => {
    var promises = dbs.map(db => {
        return new Promise((resolve, reject) => {
            var req = indexedDB.deleteDatabase(db.Name);
            req.onsuccess = resolve;
            req.onerror = reject;
            req.onblocked = reject;
        });
    });
    Promise.all(promises).then(console.log).catch(console.error);
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46040005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档