indexedDB使用
/*
* @Description: indexedDB 接口数据缓存: 创建、增删改查
* @Author: linlianqiang
* @Date: 2021-08-20 11:36:13
* @LastEditTime: 2021-08-20 15:18:35
* @LastEditors: linlianqiang
*/
const configDB = {
name: 'CocosWebDb', // 数据库名
version: 1, // 数据库版本号
db: null,
ojstore: {
name: 'Users', // 存储空间表的名字
keypath: 'id', // 主键
indexKey: 'age' // 年龄索引
}
};
export const webDB = {
indexedDB: window.indexedDB || window.webkitindexedDB,
/**
* 打开或创建数据库, 建立对象存储空间ObjectStore
* @param {string} dbName
* @param {number} dbVersion
*/
initDB(dbName, dbVersion) {
const that = this;
let version = dbVersion || 1;
const request = that.indexedDB.open(dbName, version);
request.addEventListener('success', e => {
console.log('连接成功', e);
});
request.addEventListener('error', e => {
console.log('连接失败', e);
});
// 创建对象仓库
request.addEventListener('upgradeneeded', e => {
const db = e.target.result;
// 判断是否存在
if (!db.objectStoreNames.contains(configDB.ojstore.name)) {
const store = db.createObjectStore(configDB.ojstore.name, {
keyPath: configDB.ojstore.keypath,
autoIncrement: false // 自增
});
console.log('创建仓库成功', store);
}
});
},
/**
* 添加数据
* @param {object} 数据库
* @param {string} 表名
* @param {*} 添加的数据
*/
addData(db, storename, data) {
const tx = db.transaction(storename, 'readwrite');
const store = tx.objectStore('Users');
let req;
data.forEach(item => {
req = store.add(item);
req.onerror = () => {
console.error('add添加数据库中已有该数据');
};
});
},
/**
* 删除数据库
* @param {stirng} dbname
*/
deleteDB(dbname) {
const that = this;
that.indexedDB.deleteDatabase(dbname);
},
/**
* 关闭数据库
* @param {object} db
*/
closeDB(db) {
db.close();
}
};