浏览器IndexedDB数据库使用方法
时间: 2023-09-10 07:07:00 浏览: 186
web-worker-indexeddb:使用Web Worker访问服务器并将数据保存在IndexedDB中以供离线使用
IndexedDB 是浏览器提供的本地数据库,可以在浏览器中存储结构化数据。下面是 IndexedDB 的基本使用方法:
1. 打开数据库
使用 `indexedDB` 对象的 `open()` 方法打开数据库,如下所示:
```
let request = indexedDB.open('myDB', 1);
```
其中,第一个参数是数据库名称,第二个参数是数据库版本号。如果数据库不存在,则会创建一个新的数据库。
2. 创建对象仓库
在成功打开数据库的回调方法 `request.onsuccess` 中,可以获取到数据库对象 `event.target.result`,然后使用它的 `createObjectStore()` 方法创建一个对象仓库(即数据表),如下所示:
```
let db = event.target.result;
let objectStore = db.createObjectStore('people', { keyPath: 'id' });
```
其中,第一个参数是对象仓库的名称,第二个参数是一个对象,包含一个 keyPath 属性和其他可选属性。keyPath 用来指定数据表中的主键。
3. 添加数据
使用事务 `db.transaction()` 开启一个事务,然后使用 `add()` 方法向数据表中添加数据,如下所示:
```
let transaction = db.transaction(['people'], 'readwrite');
let objectStore = transaction.objectStore('people');
let request = objectStore.add({ id: 1, name: 'John Doe' });
```
其中,第一个参数是一个数组,包含要访问的对象仓库的名称,第二个参数是事务类型,可以是 'readonly' 或 'readwrite'。`add()` 方法的参数是要添加的数据。
4. 查询数据
使用事务 `db.transaction()` 开启一个事务,然后使用 `get()` 方法查询数据,如下所示:
```
let transaction = db.transaction(['people']);
let objectStore = transaction.objectStore('people');
let request = objectStore.get(1);
request.onsuccess = function(event) {
console.log('Name: ' + event.target.result.name);
};
```
`get()` 方法的参数是要查询的数据的主键值。查询结果保存在 `request.onsuccess` 回调方法中的 `event.target.result` 中。
5. 更新数据
使用事务 `db.transaction()` 开启一个事务,然后使用 `put()` 方法更新数据,如下所示:
```
let transaction = db.transaction(['people'], 'readwrite');
let objectStore = transaction.objectStore('people');
let request = objectStore.put({ id: 1, name: 'Jane Doe' });
```
`put()` 方法的参数是要更新的数据。
6. 删除数据
使用事务 `db.transaction()` 开启一个事务,然后使用 `delete()` 方法删除数据,如下所示:
```
let transaction = db.transaction(['people'], 'readwrite');
let objectStore = transaction.objectStore('people');
let request = objectStore.delete(1);
```
`delete()` 方法的参数是要删除的数据的主键值。
以上就是 IndexedDB 的基本使用方法。需要注意的是,IndexedDB 的 API 非常庞大,不仅仅包含上面提到的这些方法,还包括索引、游标、版本升级等功能。如果需要更详细的介绍和示例代码,可以参考 MDN 的文档:https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
阅读全文