備忘。
deleteObjectStoreを行おうとしたら、「バージョン変更」を行った時のコールバック内(onupgradeneeded)でしか行えないよといわれた。
なのでDBをOpenする際に以下の様にバージョンを変えて開いたが、onupgradeneededが呼ばれない。しかしonerrorもonsuccessも呼ばれない。
var dbVersion;
var db;
function deleteObjectStore(){
console.log("オブジェクトストア削除開始");
var indexedDB = window.indexedDB || window.mozIndexedDB || window.msIndexedDB || window.webkitIndexedDB;
// DBのバージョンを上げる
dbVersion++;
var DBOpenRequest = indexedDB.open("download", dbVersion);
DBOpenRequest.onupgradeneeded = function(event) {
var req = event.target.result;
// オブジェクトストアを削除
req.deleteObjectStore("myStore");
}
DBOpenRequest.onerror = function(event){
console.log("error");
}
DBOpenRequest.onsuccess = function(event){
db = event.target.result;
console.log("DBバージョン : " + db.version);
}
}
なぜだと思っていたら、DBをクローズしていないからでした。
db.close()を追加します。
var dbVersion;
var db;
function deleteObjectStore(){
console.log("オブジェクトストア削除開始");
// DBを閉じる
db.close();
var indexedDB = window.indexedDB || window.mozIndexedDB || window.msIndexedDB || window.webkitIndexedDB;
// DBのバージョンを上げる
dbVersion++;
var DBOpenRequest = indexedDB.open("download", dbVersion);
DBOpenRequest.onupgradeneeded = function(event) {
var req = event.target.result;
// オブジェクトストアを削除
req.deleteObjectStore("myStore");
}
DBOpenRequest.onerror = function(event){
console.log("error");
}
DBOpenRequest.onsuccess = function(event){
db = event.target.result;
console.log("DBバージョン : " + db.version);
}
}
これで無事、指定のオブジェクトストアが削除できました。