做这个监控平台,之前做了数据劫持,后续要上报服务端,但是如果实时上报的话,服务端压力会很大。经过预研,找到了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
的对象仓库,并添加、获取、修改、删除数据项。在实际开发中,您需要根据自己的需求来修改代码。