首页 > 数据库技术 > 详细

indexedDB

时间:2021-04-08 00:52:26      阅读:43      评论:0      收藏:0      [点我收藏+]

 

indexedDB兼容性

技术分享图片

 代码:

class indexedDB {
    constructor(){
        this.indexedDBInstanceObject = null;
    }
    openIndexedDB(dbName = ‘cacheList‘, version = 1){
        let request = window.indexedDB && window.indexedDB.open(dbName, version);
        request.onerror = (error) => {
            console.error(‘数据库打开报错:‘,error);
        }
        request.onsuccess = (result) => {
            this.indexedDBInstanceObject = request.result;
            console.info(‘数据库打开成功:‘,result);
        }
        request.onupgradeneeded = (event) => {
            this.indexedDBInstanceObject = event.target.result;
        }
    }
    createTable(tableName = ‘person‘, params = { keyPath: ‘id‘}){
        let objectStore = null;
        if(!this.indexedDBInstanceObject.objectStoreNames.contains(tableName)){
            objectStore = this.indexedDBInstanceObject.createObjectStore(tableName, params);
        }
        return objectStore;
    }
    createIndex(indexArr = []){
        let objectStore = this.createTable();
        indexArr.forEach(item => {
            let { indexName, indexKey, indexObj } = item;
            objectStore.createIndex(indexName, indexKey, indexObj);
        });
    }
    add(tableName, data){
        let request = this.indexedDBInstanceObject.transaction([tableName], ‘readwrite‘).objectStore(tableName).add(data);
        request.onsuccess = () => {
            console.log(‘数据写入成功‘);
        }
        request.onerror = () => {
            console.log(‘数据写入失败‘);
        }
    }
    read(tableName, mainKey = 1){
        let request = this.indexedDBInstanceObject.transaction([tableName]).objectStore(tableName).get(mainKey);
        request.onsuccess = () => {
            if(request.result){
                console.log(request.result);
            }else{
                console.log(‘未获得数据‘);
            }
        }
        request.onerror = () => {
            console.log(‘读取失败‘);
        }
    }
    put(tableName, data){
        let request = this.indexedDBInstanceObject.transaction([tableName], ‘readwrite‘).objectStore(tableName).put(data);
        request.onsuccess = () => {
            console.log(‘数据更新成功‘);
        }
        request.onerror = () => {
            console.log(‘数据更新失败‘);
        }
    }
    remove(tableName, mainKey = 1){
        let request = this.indexedDBInstanceObject.transaction([tableName], ‘readwrite‘).objectStore(tableName).delete(mainKey);
        request.onsuccess = () => {
            console.log(‘数据删除成功‘);
        }
        request.onerror = () => {
            console.log(‘数据删除失败‘);
        }
    }
    readByIndex(index, value){
        let request = this.indexedDBInstanceObject.transaction([tableName], ‘readonly‘).objectStore(tableName).index(index).get(value);
        request.onsuccess = () => {
            if(request.result){
                console.log(request.result);
            }else{
                console.log(‘未获得数据‘);
            }
        }
        request.onerror = () => {
            console.log(‘读取失败‘);
        }
    }
}

indexedDB

原文:https://www.cnblogs.com/zhenjianyu/p/14629940.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!