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