简单说
indexedDB 是对象数据库,而不是关系数据库,它比 支持 SQL 简单多了。但是,它要比 Web 储存在 API 支持的键值对储存强大、更健壮、更高效。与 Web 储存和文件系统一样, insexedDB 数据库的作用也局限在包含它们的文档源中:两个同源的 Web 页面相互之间可以访问对方的数据,但是同源的页面不行。
每一个源可以有任意数目的 indexedDB 数据库。但是每一额数据库的名字都必须在该源下必须是唯一的。在 indexedDB API 中,一个数据库就是一个命名的对象仓库的集合。
每一个仓库必须有一个键,通过该键实现储存区进行该对象的储存和获取。键必须是唯一的,同一个储存区不能拥有相同的键,并且它们必须按照自然顺序储存,以便查询。
indexedDB API 很简单,查询或更新数据库步骤如下:
- 通过指定的名字打开数据库
- 创建一个事务,使用该方法在数据库中通过名字查询数据库对象储存区
- 调用对象储存区的 get() 方法来查询对象,或者是 put 来存储新的对象
如果要避免覆盖新的已有对象,可以调用 add() 方法。
如果想查询表示键范围的对象,通过创建一个 IDBRange 对象,并将其传递给对象仓库的 openCursor() 方法。
如果想用次键查询,通过查询对象仓库的命名索引,然后调用索引对象上的 get() 方法或 openCursor() 方法。