IndexDB类方法封装

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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值