프로그램/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!");
    };
}

'프로그램 > html' 카테고리의 다른 글

angular 10 observable await  (0) 2021.05.14
html5 indexeddb insert with promise  (0) 2021.05.14
angular 10 selector tag 생성되지 않도록 만들기  (0) 2021.05.14
angular 7 with jquery,bootstrap  (0) 2019.07.04
스크롤바 css 스타일  (0) 2015.04.16