返回
IndexedDB 入门手册
前端
2023-10-13 22:45:21
简介
IndexedDB 是一个低级的 API,用于在客户端存储数据,即使在浏览器关闭时数据也不会丢失。它使用户能够存储大量的数据,而无需担心数据丢失的风险。IndexedDB 的设计目标是成为一个高性能、可扩展的存储系统,能够满足各种应用程序的需求。
IndexedDB 的基本概念
IndexedDB 使用了一些基本的概念来组织和管理数据。这些概念包括:
- 数据库 :数据库是 IndexedDB 中存储数据的基本单元。一个数据库可以包含多个对象存储。
- 对象存储 :对象存储是数据库中的一个容器,用于存储键值对。键是唯一的标识符,而值是可以是任何类型的数据。
- 键 :键是对象存储中唯一标识一条记录的字段。键可以是字符串、数字或二进制数据。
- 值 :值是可以存储在对象存储中的任何类型的数据。值可以是字符串、数字、二进制数据、对象或数组。
- 事务 :事务是一组原子操作,要么全部成功,要么全部失败。事务用于确保数据的一致性。
使用 IndexedDB Promised 库
Jake Archibald 的 IndexedDB Promised 库是一个与 IndexedDB API 非常相似的库,但它使用 Promise 而不是事件。这在简化了 API 的同时又保持了其结构。
以下是如何使用 IndexedDB Promised 库来创建一个数据库:
const db = new idb.openDB('my-database', 1, {
upgrade(db) {
const store = db.createObjectStore('my-object-store', { keyPath: 'id' });
}
});
以下是如何使用 IndexedDB Promised 库来向数据库中添加数据:
db.then(db => {
const tx = db.transaction('my-object-store', 'readwrite');
const store = tx.objectStore('my-object-store');
store.add({ id: '1', name: 'John Doe' });
return tx.complete;
});
以下是如何使用 IndexedDB Promised 库从数据库中读取数据:
db.then(db => {
const tx = db.transaction('my-object-store', 'readonly');
const store = tx.objectStore('my-object-store');
return store.get('1');
});
以下是如何使用 IndexedDB Promised 库从数据库中删除数据:
db.then(db => {
const tx = db.transaction('my-object-store', 'readwrite');
const store = tx.objectStore('my-object-store');
store.delete('1');
return tx.complete;
});
结论
IndexedDB 是一个强大的 API,可用于在客户端存储数据。它使用户能够存储大量的数据,而无需担心数据丢失的风险。IndexedDB 的设计目标是成为一个高性能、可扩展的存储系统,能够满足各种应用程序的需求。