跳转到内容

IndexedDB

  1. 适合存储 大量复杂数据(如应用缓存、用户订单记录),支持对象存储、事务和查询。容量可达 GB 级
  2. 需要事务管理
  3. 异步操作不阻塞页面
  4. 支持复杂查询和索引(比 localStorage 快得多)
js
// 打开或创建数据库
const request = indexedDB.open('myDatabase', 1);

request.onupgradeneeded = (event) => {
	const db = event.target.result;

	// 创建对象仓库(类似数据表),主键为 id
	if (!db.objectStoreNames.contains('users')) {
		db.createObjectStore('users', { keyPath: 'id' });
	}
};

request.onsuccess = (event) => {
	const db = event.target.result;

	// 插入数据
	const tx = db.transaction('users', 'readwrite');
	const store = tx.objectStore('users');

	store.add({ id: 1, name: 'Alice', age: 30 });
	store.add({ id: 2, name: 'Bob', age: 25 });

	tx.oncomplete = () => {
		console.log('数据写入成功');

		// 查询所有数据
		const readTx = db.transaction('users', 'readonly');
		const readStore = readTx.objectStore('users');
		const getAllRequest = readStore.getAll();

		getAllRequest.onsuccess = () => {
			console.log('读取到的数据:', getAllRequest.result);
		};
	};

	tx.onerror = (event) => {
		console.error('事务出错:', event.target.error);
	};
};

request.onerror = (event) => {
	console.error('打开数据库失败:', event.target.error);
};

Will Try My Best.