该函数检查数据库是否存在。使用onupgradeneeded事件,如果版本为1并且触发了该事件,则表示该数据库不存在,而是使用window.indexedDB.open(name)函数创建的,也就是说应该删除它。
当 onsuccess 事件触发,而不是 onupgradeneeded 事件(变量 dbExists 保持为真)时,表明数据库之前存在并返回真。
/**
* Check if a database exists
* @param {string} name Database name
* @param {function} callback Function to return the response
* @returns {bool} True if the database exists
*/
function databaseExists(name, callback) {
var dbExists = true;
var request = window.indexedDB.open(name);
request.onupgradeneeded = function (e) {
if (request.result.version === 1) {
dbExists = false;
window.indexedDB.deleteDatabase(name);
if (callback) callback(dbExists);
}
};
request.onsuccess = function (e) {
if (dbExists) {
if (callback) callback(dbExists);
}
};
}
该函数的输出是通过一个回调函数。使用形式如下:
var name = "TestDatabase";
databaseExists(name, function (exists) {
if (exists) {
console.debug("database " + name + " exists");
} else {
console.debug("database " + name + " does not exists");
}
});
[对不起我的英语不好]