天天看点

indexedDB的基础使用--索引索引的创建IDBIndex

文章目录

  • 索引的创建
    • createIndex的用法
      • 参数说明
  • IDBIndex
    • 常用方法
      • `IDBIndex.get()`
        • 用法
        • 参数
      • `IDBIndex.getAll()`
        • 用法
        • 参数

根据MDN文档的描述,索引是一种为了在其他

objectStore

中查找数据的

objectStore

。用户可以使用这个接口来获取数据。

用户可以通过主键或者是索引来获取数据。索引可以让你使用记录中的值而不是主键来查找数据。

数组是一个长期有效的键-值存储,它的值就是被参照的

objectStore

的键。无论什么时候数据在被参照

objectStoe

中被插入、更新或删除,索引中的数据是自动产生的。索引中的每一条数据

都只能指向被参照

objectStore

中的一条数据,但是几条数据可以同时指向被参照

objectStore

中的同一条数据。

索引的创建

创建索引需要用到

IDBObjectStore

对象的

createIndex

方法,需要注意这个方法只能在

VersionChange

事件回调中调用。

createIndex的用法

用法如下:

参数说明

  • indexName

    :将要创建的索引的名字。可以为空。
  • keyPath

    :索引的值。可以为空,也可以传一个数组。
  • objectParameters

    :一个

    IDBIndexParameters

    对象。可以包含如下值:
    • unique

      :如果为真,索引将不会允许一个键对应多个值的情况
    • multiEntry

      :如果为真且

      keyPath

      指向的字段是数组,那么会为数组中每个元素建立索引

IDBIndex

常用方法

IDBIndex.get()

IDBIndex

get

方法会返回一个

IDBRequest

对象,同时在另一个线程中会寻找被参照的

objectStore

内与给出的键相关的值,或者是如果这个键在

IDBKeyRange

所给定的范围内的话,那么给出第一个相关值。

用法

参数

  • key:可选参数。一个键,或者是一个想要查询的数据的范围。如果这个值为空或,那么浏览器会选择

    unbound

    的范围。

IDBIndex.getAll()

通过游标(cursor)来查看数据的值存在性能损失,因为对象是懒创建的。而如果使用像

getAll

这样的方法,浏览器不得不同时创建所有的对象。如果只是想用游标来看数据的键,那么使用游标是更有效的选择。

用法

参数

  • query:与

    IDBIndex

    get

    方法类似含义。
  • count:希望所返回的数据数。