indexedDB的基础使用--索引


根据MDN文档的描述,索引是一种为了在其他 objectStore中查找数据的 objectStore。用户可以使用这个接口来获取数据。

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

数组是一个长期有效的键-值存储,它的值就是被参照的objectStore的键。无论什么时候数据在被参照objectStoe中被插入、更新或删除,索引中的数据是自动产生的。索引中的每一条数据
都只能指向被参照objectStore中的一条数据,但是几条数据可以同时指向被参照objectStore中的同一条数据。

索引的创建

创建索引需要用到IDBObjectStore对象的createIndex方法,需要注意这个方法只能在VersionChange事件回调中调用。

createIndex的用法

用法如下:

let index = objectStore.createIndex(indexName, keyPath, objectParameters);

参数说明

  • indexName:将要创建的索引的名字。可以为空。
  • keyPath:索引的值。可以为空,也可以传一个数组。
  • objectParameters:一个IDBIndexParameters对象。可以包含如下值:
    • unique:如果为真,索引将不会允许一个键对应多个值的情况
    • multiEntry:如果为真且keyPath指向的字段是数组,那么会为数组中每个元素建立索引

IDBIndex

常用方法

IDBIndex.get()

IDBIndexget方法会返回一个IDBRequest对象,同时在另一个线程中会寻找被参照的objectStore内与给出的键相关的值,或者是如果这个键在IDBKeyRange所给定的范围内的话,那么给出第一个相关值。

用法

let request = myIndex.get(key);

参数

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

IDBIndex.getAll()

通过游标(cursor)来查看数据的值存在性能损失,因为对象是懒创建的。而如果使用像getAll这样的方法,浏览器不得不同时创建所有的对象。如果只是想用游标来看数据的键,那么使用游标是更有效的选择。

用法

var getAllKeysRequest = IDBIndex.getAll(query, count);

参数

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

猜你喜欢

转载自blog.csdn.net/hjc256/article/details/89008239