IndexedDB 是一种在浏览器中进行本地存储的技术,它可以通过 JavaScript 进行访问和操作。下面是使用 IndexedDB 进行本地存储的大致流程:
打开数据库:通过调用 window.indexedDB.open() 方法打开一个指定名称的数据库,如果不存在就会自动创建。
创建对象存储空间:调用数据库的方法创建一个对象存储空间,可以在其中存储键值对数据。
添加数据:通过调用对象存储空间的 put() 或 add() 方法添加数据。其中,put() 方法会更新已有数据,add() 方法则会忽略已有数据而只添加新数据。
读取数据:通过调用对象存储空间的 get() 方法读取数据。
删除数据:通过调用对象存储空间的 delete() 方法删除数据。
关闭数据库:通过调用数据库的 close() 方法关闭数据库连接。
以下是代码示例:
// 打开数据库
const request = window.indexedDB.open('myDatabase', 1);
// 如果不存在该数据库,则创建一个对象存储空间
request.onupgradeneeded = function(event) {
const db = event.target.result;
const objectStore = db.createObjectStore('myObjectStore', { keyPath: 'id' });
};
// 添加数据
request.onsuccess = function(event) {
const db = event.target.result;
const transaction = db.transaction(['myObjectStore'], 'readwrite');
const objectStore = transaction.objectStore('myObjectStore');
const data = { id: 1, name: 'John' };
const request = objectStore.put(data);
};
// 读取数据
request.onsuccess = function(event) {
const db = event.target.result;
const transaction = db.transaction(['myObjectStore'], 'readonly');
const objectStore = transaction.objectStore('myObjectStore');
const request = objectStore.get(1);
request.onsuccess = function(event) {
const data = event.target.result;
console.log(data.name);
};
};
// 删除数据
request.onsuccess = function(event) {
const db = event.target.result;
const transaction = db.transaction(['myObjectStore'], 'readwrite');
const objectStore = transaction.objectStore('myObjectStore');
const request = objectStore.delete(1);
};
// 关闭数据库连接
request.onsuccess = function(event) {
const db = event.target.result;
db.close();
};
需要注意的是,IndexedDB 使用异步 API 进行操作,因此需要通过回调函数或 Promise 来获取操作结果。同时,IndexedDB 的 API 比较复杂,需要对其使用进行深入理解。