프로그램/html
html5 indexeddb table 생성
milktea.kang
2021. 5. 14. 13:10
let idbFactory = indexedDB;
let dbPromise = idbFactory.open("schemaName",1);
dbPromise.onerror = (err:any) => {
console.error("db open err",err);
};
// 호출순서:1
dbPromise.onupgradeneeded = (evt:any) => {
// console.log("onupgradeneeded",evt.target.result);
this.idb = evt.target.result;
let tx:IDBTransaction = evt.target.transaction;
let tbNameRow = "table-name-row";
if(this.idb.objectStoreNames.contains(tbNameRow)){
this.idb.deleteObjectStore(tbNameRow);
}
let dbOptRow:IDBObjectStoreParameters = {
keyPath:"id"
,autoIncrement:false
};
let tbRow = this.idb.createObjectStore(tbNameRow,dbOptRow);
tbRow.createIndex(`idx_${tbNameRow}_01`,["field1","field2"],{unique:true});
useDb(this.idb);
tx.oncomplete = function(evtTx){
resolve(evt.target.result);
}
};
// 호출순서:2
dbPromise.onsuccess = (evt:any) => {
// console.log("onsuccess",evt.target.result);
this.idb = evt.target.result;
useDb(this.idb);
};
function useDb(idb){
idb.onversionchange = function(event) {
idb.close();
console.log("A new version of this page is ready. Please reload or close this tab!");
};
}