PWA 技术中如何利用 IndexedDB 存储数据

· 约 5 分钟读完

在现代的 Web 应用开发中, PWA 技术已经成为了一个非常重要的概念。PWA 技术是利用 Web 技术来构建类似原生应用的 Web 应用,具有离线访问、推送通知、桌面图标等特性。而其中,离线访问是一个非常重要的特性,使得用户可以在弱网环境中仍然能够使用应用。

在 PWA 中,IndexedDB 是一个非常重要的离线存储技术。IndexedDB 是一个基于键值对存储的数据库,适合用于存储非关系型数据。在离线情况下,使用 IndexedDB 可以帮助我们缓存数据、图片等资源,保证应用仍能正常使用。

IndexedDB 的基本概念

在了解 PWA 中如何使用 IndexedDB 之前,我们需要先了解一些 IndexedDB 的基本概念。

  • Database:IndexedDB 存储数据的数据库对象。
  • Object Store:类似于关系型数据库中的表,存储 IndexedDB 存储的数据集。
  • Transaction:对 Object Store 的操作需要放在 Transaction 中执行。
  • Key/path:IndexedDB 中存储的数据都是键值对,其中键可以是字符串、数字等基本类型,值可以是任意 JS 对象。
  • Index:用于通过非键值方式搜索 Object Store 的索引。

使用 IndexedDB 存储数据

下面,我们来看一下如何使用 IndexedDB 存储数据。

打开数据库

在使用 IndexedDB 前,我们需要先打开数据库。可以使用下面的代码:

上面的代码中新建了一个名为 example 版本为 1 的数据库。当打开数据库时,如果数据库不存在或版本号比现有的高,则会触发 onupgradeneeded 事件,在该事件的回调函数中可以新建 Object Store,设置索引等操作。

当打开成功后,会触发 onsuccess 事件,我们可以在该事件的回调函数中获取到数据库对象进行操作。如果打开失败,则会触发 onerror 事件。

操作数据

在打开数据库后,我们可以使用下面的代码来操作数据:

上面的代码中,首先使用 transaction() 方法开启一个事务,之后获取到相应的 Object Store 对象进行操作。add() 方法用于添加数据,put() 方法用于更新数据,get() 方法用于获取数据。

索引数据

在 IndexedDB 中,我们可以通过索引来快速搜索数据,可以使用下面的代码来创建索引:

上面的代码中,createIndex() 方法用于创建索引,第一个参数是索引名称,第二个参数是要索引的属性,第三个参数是一些可选的配置项。在创建索引后,我们可以使用下面的代码来搜索数据:

上面的代码中,使用 index() 方法获取到相应的索引,之后使用 getAll() 方法搜索数据。

小结

以上是关于 PWA 技术中如何利用 IndexedDB 存储数据的介绍。IndexedDB 可以帮助我们在离线情况下缓存数据,保证应用仍能正常使用。在使用 IndexedDB 前,我们需要先打开数据库,之后可以操作数据、创建索引等操作,最后可以通过索引来搜索数据。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d01229e46428fe9ec9e32d