检查IndexedDB数据库是否存在

前端之家收集整理的这篇文章主要介绍了检查IndexedDB数据库是否存在前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法检查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;
    }
}

解决方法

在onupgradedeeded回调你可以检查版本. (e.target.result.oldversion).如果
它是0,db不存在.

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

我已经建立了自己的indexeddbviewer.因为我打开没有版本的indexeddb,如果我进入onupgradeneeded事件,那意味着db不存在.在这种情况下,我称之为中止,所以它不升级到版本1.这是我检查它的方式.

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

但如前所述.在这种情况下,db可能会继续存在,但是会调用onupgradeneeded

猜你在找的MsSQL相关文章