この関数は、データベースが存在するかどうかをチェックします。onupgradeneeded イベントを使用します。バージョンが 1 でイベントがトリガーされた場合は、データベースが存在しないことを意味しますが、window.indexedDB.open(name) 関数で作成されているため、削除する必要があります。
onsuccess イベントが発生しても、onupgradeneeded イベントが発生しない場合 (変数 dbExists が true のまま)、データベースが以前に存在していたことを示し、true を返します。
/**
* 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");
}
});
[私の英語でごめんなさい]