class IndexDB {
request;
db;
constructor() {
this.request = window.indexedDB.open("history");
this.request.onsuccess = this.onsuccess;
this.request.onerror = this.onerror;
this.request.onupgradeneeded = this.onupgradeneeded;
}
onsuccess = (event) => {
this.db = event.target.result;
console.log("连接成功");
};
onerror = (event) => {
console.log("连接失败");
};
onupgradeneeded = (event) => {
const db = event.target.result;
let objectStore;
if (!db.objectStoreNames.contains("history")) {
objectStore = db.createObjectStore("history", { keyPath: "id" });
objectStore.createIndex("message", "message", { unique: false });
objectStore.createIndex("fieldPath", "fieldPath", { unique: false });
objectStore.createIndex("result", "result", { unique: false });
}
};
/**增加 */
add = (params) => {
const { id, message, fieldPath, result } = params;
try {
const next = this.db
.transaction("history", "readwrite")
.objectStore("history")
.add({
id,
message,
fieldPath,
result,
});
next.onsuccess = this.addOnSuccess;
next.onerror = this.addOnError;
} catch (err) {
console.log(err);
}
};
addOnSuccess = () => {
console.log("数据添加成功");
};
addOnError = () => {
console.log("数据添加失败");
};
/**查询 */
read = async (params, callback) => {
const next = this.db.transaction("history", "readwrite");
const objectStore = next.objectStore("history");
const request = objectStore.get(params);
request.onerror = this.readOnError;
request.onsuccess = function (event) {
if (event.target.result) {
callback(event.target.result);
} else {
callback(null);
}
};
request.onerror = function (event) {
callback(false);
};
};
/**清除全部 */
clearAllData = (callback) => {
const request = window.indexedDB.deleteDatabase("history");
request.onerror = function (event) {
callback(false);
};
request.onsuccess = function (event) {
callback(true);
};
};
/**修改 */
put = (params,callback)=>{
const { id, message, fieldPath, result } = params;
try {
const next = this.db
.transaction("history", "readwrite")
.objectStore("history")
.put({
id,
message,
fieldPath,
result,
});
next.onsuccess = function (event){
callback(true)
};
next.onerror = function (event){
callback(false)
};;
} catch (err) {
console.log(err);
}
}
}
export default new IndexDB();
IndexDB类方法封装
最新推荐文章于 2023-08-14 10:39:40 发布