gpt4 book ai didi

indexeddb - 检查 IndexedDB 数据库是否存在

转载 作者:行者123 更新时间:2023-12-03 14:41:31 28 4
gpt4 key购买 nike

有没有办法检查 IndexedDB 数据库是否已经存在?当程序试图打开一个不存在的数据库时,该数据库被创建。
我能想到的唯一方法是如下所示,我测试 objectStore 是否已经存在,如果不存在,则删除数据库:

var dbexists=false;
var request = window.indexedDB.open("TestDatabase");
request.onupgradeneeded = function(e) {
db = e.target.result;
if (!db.objectStoreNames.contains('todo')) {
db.close();
indexedDB.deleteDatabase("TestDatabase");
} else {
dbexists=true;
}
}

最佳答案

在 onupgradeneeded 回调中,您可以检查版本。 (e.target.result.oldversion)。如果
它是 0,数据库不存在。

编辑:
经过一番调查。您不能 100% 确定是否创建了新数据库。我确信的一件事是,如果它具有版本 1 或更高版本,您只能使用 indexeddb。我相信一个 db 可以存在并且有一个版本 0(唯一的事实是你不能使用它并且 onupgradeneeded 事件将被调用)。

我已经建立了自己的 indexeddbviewer。因为我打开了没有版本的 indexeddb,如果我进入 onupgradeneeded 事件,那意味着该数据库不存在。在这种情况下,我调用 abort,因此它不会升级到版本 1。这就是我检查它的方式。

var dbExists = true;
var request = window.indexeddb.open("db");
request.onupgradeneeded = function (e){
e.target.transaction.abort();
dbExists = false;
}

但如前所述。在这种情况下,db 可能会继续存在,但 onupgradeneeded 将始终被调用

关于indexeddb - 检查 IndexedDB 数据库是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17468963/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com