请说说indexedDB有哪些基本操作?
IndexedDB在前端开发中是一种强大的客户端数据库,它允许在浏览器中存储和检索大量结构化数据。以下是IndexedDB的基本操作:
-
打开数据库:
- 使用
window.indexedDB.open(databaseName, version)方法打开数据库。如果数据库不存在,则会创建一个新的数据库。这个方法返回一个IDBRequest对象,可以通过监听其onerror、onsuccess和onupgradeneeded事件来处理打开数据库的操作结果。
- 使用
-
创建对象存储(Object Store)和索引:
- 在
onupgradeneeded事件回调中,可以通过db.createObjectStore(storeName, options)方法创建对象存储,类似于关系型数据库中的表。其中,storeName是对象存储的名称,options是配置对象,可以指定主键和是否自动递增。 - 创建索引使用
objectStore.createIndex(indexName, keyPath, options)方法,其中indexName是索引的名称,keyPath是索引所在的属性,options是配置对象,可以指定该属性是否包含重复的值。
- 在
-
添加数据:
- 通过创建一个事务,然后使用
objectStore.add(data)方法向对象存储中添加数据。这个方法返回一个IDBRequest对象,可以监听其onsuccess和onerror事件来处理添加数据的操作结果。
- 通过创建一个事务,然后使用
-
读取数据:
- 可以通过
objectStore.get(key)方法根据主键读取数据,或者使用索引和游标(Cursor)来查询满足特定条件的数据。游标可以遍历存储对象中的所有内容。
- 可以通过
-
更新数据:
- 使用
objectStore.put(data)方法可以更新对象存储中的数据。如果数据的主键已经存在,则该方法会更新该主键对应的数据;否则,会添加一条新的数据。
- 使用
-
删除数据:
- 可以通过
objectStore.delete(key)方法根据主键删除数据,或者使用游标和索引来删除满足特定条件的数据。
- 可以通过
-
关闭数据库:
- 尽管在很多情况下浏览器会自动管理数据库的关闭,但在长时间不使用数据库或完成所有操作后,显式地关闭数据库连接是一个好习惯。这可以通过调用数据库对象的
close()方法来实现。
- 尽管在很多情况下浏览器会自动管理数据库的关闭,但在长时间不使用数据库或完成所有操作后,显式地关闭数据库连接是一个好习惯。这可以通过调用数据库对象的
需要注意的是,IndexedDB的操作是异步的,因此需要使用回调函数或Promise来处理操作结果。此外,IndexedDB还受到同源策略的限制,只能被相同域下的页面访问。
总的来说,IndexedDB提供了在浏览器中存储和检索大量结构化数据的强大功能,适用于需要高性能、离线支持和大量数据存储的应用场景。
浙公网安备 33010602011771号