前端监控平台

做这个监控平台,之前做了数据劫持,后续要上报服务端,但是如果实时上报的话,服务端压力会很大。经过预研,找到了indexedDB这个前端缓存,之所以选择他,是因为他是一个类似于mysql数据库的一个前端缓存。体量也蛮大的。

下面是我的一个思路:

今天我给大家讲一下indexedDB

// 打开或创建一个名为 'myDatabase' 的数据库,版本号为 1
const request = indexedDB.open('myDatabase', 1);

// 监听数据库打开成功的事件
request.onsuccess = (event) => {
  // 获取数据库实例
  const db = event.target.result;
  console.log('数据库打开成功', db);
};

// 监听数据库打开失败的事件
request.onerror = (event) => {
  console.log('数据库打开失败', event);
};

// 监听数据库升级的事件
request.onupgradeneeded = (event) => {
  // 获取数据库实例
  const db = event.target.result;

  // 创建一个名为 'myObjectStore' 的对象仓库
  const objectStore = db.createObjectStore('myObjectStore', { keyPath: 'id' });

  // 创建一个名为 'name' 的索引
  objectStore.createIndex('name', 'name', { unique: false });

  console.log('数据库升级成功', db);
};

// 添加数据到数据库
function addData() {
  // 获取数据库实例
  const db = request.result;

  // 创建一个事务
  const transaction = db.transaction(['myObjectStore'], 'readwrite');

  // 获取对象仓库
  const objectStore = transaction.objectStore('myObjectStore');

  // 创建一个新的数据项
  const newItem = { id: 1, name: '张三', age: 18 };

  // 添加数据项到对象仓库
  const request = objectStore.add(newItem);

  // 监听添加数据项成功的事件
  request.onsuccess = (event) => {
    console.log('数据添加成功');
  };

  // 监听添加数据项失败的事件
  request.onerror = (event) => {
    console.log('数据添加失败', event);
  };
}

// 从数据库中获取数据
function getData() {
  // 获取数据库实例
  const db = request.result;

  // 创建一个事务
  const transaction = db.transaction(['myObjectStore'], 'readonly');

  // 获取对象仓库
  const objectStore = transaction.objectStore('myObjectStore');

  // 获取所有数据项
  const request = objectStore.getAll();

  // 监听获取数据项成功的事件
  request.onsuccess = (event) => {
    console.log('数据获取成功', request.result);
  };

  // 监听获取数据项失败的事件
  request.onerror = (event) => {
    console.log('数据获取失败', event);
  };
}

// 修改数据
function updateData() {
  // 获取数据库实例
  const db = request.result;

  // 创建一个事务
  const transaction = db.transaction(['myObjectStore'], 'readwrite');

  // 获取对象仓库
  const objectStore = transaction.objectStore('myObjectStore');

  // 获取要修改的数据项
  const request = objectStore.get(1);

  // 监听获取数据项成功的事件
  request.onsuccess = (event) => {
    // 获取要修改的数据项
    const data = request.result;

    // 修改数据项
    data.age = 20;

    // 更新数据项到对象仓库
    const updateRequest = objectStore.put(data);

    // 监听更新数据项成功的事件
    updateRequest.onsuccess = (event) => {
      console.log('数据更新成功');
    };

    // 监听更新数据项失败的事件
    updateRequest.onerror = (event) => {
      console.log('数据更新失败', event);
    };
  };

  // 监听获取数据项失败的事件
  request.onerror = (event) => {
    console.log('数据获取失败', event);
  };
}

// 删除数据
function deleteData() {
  // 获取数据库实例
  const db = request.result;

  // 创建一个事务
  const transaction = db.transaction(['myObjectStore'], 'readwrite');

  // 获取对象仓库
  const objectStore = transaction.objectStore('myObjectStore');

  // 删除数据项
  const request = objectStore.delete(1);

  // 监听删除数据项成功的事件
  request.onsuccess = (event) => {
    console.log('数据删除成功');
  };

  // 监听删除数据项失败的事件
  request.onerror = (event) => {
    console.log('数据删除失败', event);
  };
}

上面的代码演示了如何创建一个名为 myDatabase 的数据库,创建一个名为 myObjectStore 的对象仓库,并添加、获取、修改、删除数据项。在实际开发中,您需要根据自己的需求来修改代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值