indexedDB API整理

  • IDBFactory

提供了对数据库的访问。这是由全局对象 indexedDB实现的接口,因而也是该 API 的入口。

属性/方法 描述
indexedDB.open(name, [version]) 请求连接到指定name和version的数据库,如果指定name的数据库不存在,则利用name和version创建一个数据库。
indexedDB.deleteDatabase(name) 请求删除指定name的数据库。
indexedDB.cmp(a, b) 比较两个值的大小。a小于b为-1,a与b相等为0,a大于b为1。
  • IDBCursor

遍历对象存储空间和索引。

属性/方法 描述
cursor.advice(count) 游标向前移动的次数。
cursor.continue(optionalKey) 继续沿着当前游标遍历方向,找到下一个能够匹配key参数的键。如果没有指定参数,则根据游标当前遍历方向,移动到下一个位置。
cursor.delete( ) 返回一个IDBRequest对象。在一个独立线程内删除游标所在位置处的记录(不移动游标),随后将游标设置为null。
cursor.update(newValue) 返回一个IDBRequest对象。在一个独立线程内,使用newValue来更新对象存储内游标当前位置处的值。如果游标指向的记录已被删除,则利用指定的newValue值创建一个新的记录。
cursor.source(只读) 返回游标遍历的IDBObjectStore或IDBIndex。
cursor.direction(只读) 游标遍历的方向。next: 从数据源开始位置遍历。nextunique: 从数据源开始位置开始遍历,当取值又重复时,只获取一次。prev: 从数据源的最后位置开始遍历。prevunique: 从数据源最后位置开始遍历,当取值又重复时,只获取一次。
cursor.key(只读) 返回游标所在位置处记录的键。如果游标超出范围,则返回undefined。
cursor.primaryKey(只读) 返回游标当前位置的主键。如果游标当前正在迭代或超出迭代范围,则设置为undefined。游标的主键可以是任何数据类型。
  • IDBCursorWithValue

遍历对象存储空间和索引并返回游标的当前值。

属性/方法 描述
cursor.value 返回游标当前位置的值。
  • IDBDatabase

表示到数据库的连接。只能通过这个连接来拿到一个数据库事务。

属性/方法 描述
IDBDatabase.close( ) 关闭数据库。
IDBDatabase.createObjectStore(name, [parameters]) 构建一个存储空间。parameters是个可选对象,有以下两个属性:{keyPath: "id"} 设置一个keyPath键,被存储在对象存储空间中的所有对象都必须存在“id”。{autoIncrement: true} 自动生成数字键。
IDBDatabase.deleteObjectStore("toDoList") 删除指定name的数据存储空间。
IDBDatabase.transaction(storeName, [mode]) 立即返回一个IDBTransaction对象,然后在一个独立线程内开启一个事务。第一个参数是事务希望跨越的对象存储空间的列表(storeName为字符串数组,如果你只需要访问一个对象存储空间,可以用一个字符串作为storeName)。如果你希望事务能够跨越所有的对象存储空间你可以传入一个空数组。第二个参数定义了事务的访问类型:readonly(默认)或者readwrite。
IDBDatabase.name (只读) 数据库的名称。
IDBDatabase.version(只读) 数据库的版本号。
IDBDatabase.objectStoreNames(只读) 当前存储在连接的数据库中的对象名称的列表.。
IDBDatabase.onabort = function( ) { ... } 当数据库访问被中止时触发。
IDBDatabase.onerror = function( ) { ... } 访问数据库失败触发。
IDBDatabase.onversionchange = function( ) { ... } 当数据库结构发生变化时触发。
  • IDBEnvironment

提供了到客户端数据库的访问。它由 window 对象实现。

属性/方法 描述
window.indexedDB 为应用程序提供异步访问索引数据库的功能的机制。
  • IDBIndex

提供了到索引元数据的访问。

属性/方法 描述
IDBIndex.count( ) 返回一个IDBRequest对象,并在一个单独的线程内返回范围内键的数目。
IDBIndex.get(key) 返回一个IDBRequest对象,并且在一个单独的线程,返回与键相关联的记录。
IDBIndex.getAll([query], [count])(第二版草案) 返回一个IDBRequest对象,并且在一个单独的线程,返回在索引中的所有对象。
IDBIndex.getKey(key) 返回一个IDBRequest对象,并且在一个单独的线程,返回主键的值。
IDBIndex.getAllKeys([query], [count]) (第二版草案) 立即检索IDBObjectStore内的所有对象的键,设置为result请求的对象。
IDBIndex.openCursor([range], [direction]) 返回一个IDBRequest对象,然后在一个独立线程内,在指定键范围内创建一个游标。
IDBIndex.openKeyCursor()(第二版草案) 返回一个IDBRequest对象,然后在一个独立线程内,在指定键范围内创建一个游标,返回的记录基于索引排序而非主键。
IDBIndex.name(只读) 返回该索引的名称。
IDBIndex.objectStore(只读) 此索引引用对象存储的名称
IDBIndex.keyPath(只读) 返回keyPath的值。
DBIndex.multiEntry(只读) 返回IDBObjectStore.createIndex方法设置的multiEntry属性
IDBIndex.unique(只读) 返回IDBObjectStore.createIndex方法设置的unqie属性
  • IDBKeyRange

定义键的范围。

属性/方法 描述
IDBKeyRange.bound(lower, upper, [lowerOpen], [upperOpen]) 创建并返回一个带有lower和upper界限的键范围。如果lowerOpen或upperOpen为ture,则这个范围不包含界限本身(默认为false)。
IDBKeyRange.includes( ) 返回一个布尔值,指示指定的键是否键范围内。
IDBKeyRange.only( ) 创建一个包含单个值的新的键范围。
IDBKeyRange.lowerBound(lower, [lowerOpen]) 创建一个下限键范围。lowerOpen如果为true,表示范围不包括界限本身。
IDBKeyRange.upperBound(upper, [upperOpen] ) 创建一个新的上限键范围。lowerOpen如果为true,表示范围不包括界限本身。
IDBKeyRange.lower(只读) 返回下限。
IDBKeyRange.upper(只读) 返回上限。
IDBKeyRange.lowerOpen(只读) 如果下限值被包括在键范围,则返回false,否则为true。
IDBKeyRange.upperOpen(只读) 如果上限值被包括在键范围,则返回false,否则为true。
  • *IDBObjectStore *

表示一个对象存储空间。

属性/方法 描述
IDBObjectStore.add(value, [key]) 新增存储对象。(第2个可选参数用来指定相关的key,但是试验几次均不成功,不知道怎么设置,也不知道是什么一个效果。若不指定则为null。貌似不知道也不影响使用,不过若有懂的还望告知!)
IDBObjectStore.clear( ) 创建并立即返回一个IDBRequest对象,并在一个单独的线程清除该对象存储。该方法会清除掉存储索引中的所有记录,若只想要删除某项数据可以使用IDBObjectStore.delete()或者设置IDBKeyRange。
IDBObjectStore.get(key) 返回一个IDBRequest对象,并在一个单独的线程,返回指定键所对应的存储空间。
IDBObjectStore.delete(keyorKeyRange) 返回一个IDBRequest对象,并且在一个单独的线程删除指定的记录。
IDBObjectStore.getKey(key)(第二版草案) 返回一个IDBRequest对象,并且在一个单独的线程,返回指定的查询中选择的键。
IDBObjectStore.getAll([query], [count]) 返回一个IDBRequest包含在对象存储的所有对象指定的参数或在商店中的所有对象的匹配,如果没有给定参数的对象。
IDBObjectStore.getAllKeys([query], [count])(第二版草案) 立即检索IDBObjectStore内的所有对象的键,设置为result请求的对象。
IDBObjectStore.createIndex(name, keyPath, [parameters]) 利用指定的name和keyPath参数,创建并返回一个新的IDBIndex对象。该方法只能在versionChange事务模式回调中调用。[parameters]:unique: 如果为true,键的值不能重复。multiEntry: 若为true,当keyPath解析为数组时,每个数组元素都会被添加为索引。若为false,索引就只是一个包含多个元素的数组。
IDBObjectStore.deleteIndex(indexName) 删除一个索引项。该方法只能在versionChange事务模式回调中调用。
IDBObjectStore.index(indexName) 返回对象索引中名为indexName的索引。
IDBObjectStore.put(value, [key]) 返回IDBRequest对象。更新和插入对象。
IDBObjectStore.openCursor([range], [direction]) 返回IDBRequest对象。然后在一个独立的线程内,在对象存储的记录上创建一个游标。
IDBObjectStore.openKeyCursor([range], [direction]) 返回一个IDBRequest对象,其结果将被设置为IDBCursor可用于通过匹配结果进行迭代。
IDBObjectStore.count(range) 返回一个IDBRequest对象,并且在一个单独的线程,返回匹配提供的key或者range的记录的总数。如果没有提供参数,它将返回记录的总数。
IDBObjectStore.indexNames(只读) 返回存储空间上的索引名。
IDBObjectStore.keyPath(只读) 返回存储空间上的keyPath。
IDBObjectStore.name 返回该存储空间的名称。
IDBObjectStore.transaction(只读) 返回一个IDBTransaction对象。返回此对象存储所属的事务对象。
IDBObjectStore.autoIncrement(只读) 返回autoIncrement在对象上存储的值。
  • *IDBOpenDBRequest *

表示一个打开数据库的请求。

属性/方法 描述
IDBOpenDBRequest.onblocked = function ( ) { ... } upgradeneeded事件因为一个版本的变化被触发,但数据库仍然在使用时触发该事件。
IDBOpenDBRequest.onupgradeneeded = function ( ) { ... } 在版本发生变动时会触发upgradeneeded事件。在这里面,我们可以创建和删除对象存储空间以及构建和删除索引。
  • IDBRequest

提供了到数据库异步请求结果和数据库的访问。这也是在你调用一个异步方法时所得到的。

属性/方法 描述
IDBRequest.result(只读) 返回请求的结果。
IDBRequest.error(只读) 在请求不成功的情况下返回错误。
IDBRequest.source(只读) 返回索引或对象存储的来源。
IDBRequest.transaction(只读) 返回此对象存储所属的事务对象。
IDBRequest.readyState(只读) 返回请求的状态。pending: 该请求被挂起。done: 请求已经完成。
IDBRequest.onerror = function ( ) { ... } 处理程序错误事件。
IDBRequest.onsuccess = function ( ) { ... } 处理程序成功事件。
  • IDBTransaction

表示一个事务。你在数据库上创建一个事务,指定它的范围(例如你希望访问哪一个对象存储空间),并确定你希望的访问类型(只读或写入)。

属性/方法 描述
IDBTransaction.abort 放弃本次连接的transaction的所有修改,如果当前的transaction处于回滚完毕或完成状态,则会抛出一个错误事件。
IDBTransaction.objectStore(name) 获取对象存储空间。
IDBTransaction.db(只读) 返回与此事务对象相关联的数据库连接。
IDBTransaction.mode(只读) 返回数据模式。readonly/readwrite/versionChange
IDBTransaction.error 返回一个错误。
IDBTransaction.onabort = function() { ... } 中止事件。
IDBTransaction.oncomplete = function() { ... }; IDBTransaction接口处理完成时触发。
IDBTransaction.onerror = function() { ... }; IDBTransaction接口处理错误事件。
  • IDBVersionChangeEvent

表明数据库的版本号已经改变。

属性/方法 描述
IDBVersionChangeEvent.oldVersion 返回数据库的旧版本号。
IDBVersionChangeEvent.newVersion 返回数据库的新版本号。

渣渣英语水平,开了3个翻译工具,花了几天时间总算整理完成。能力有限,可能有一些错漏。若有不足,望请指正!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容