indexedDB API整理

  • IDBFactory

提供了對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。這是由全局對(duì)象 indexedDB實(shí)現(xiàn)的接口,因而也是該 API 的入口。

屬性/方法 描述
indexedDB.open(name, [version]) 請(qǐng)求連接到指定name和version的數(shù)據(jù)庫(kù),如果指定name的數(shù)據(jù)庫(kù)不存在,則利用name和version創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
indexedDB.deleteDatabase(name) 請(qǐng)求刪除指定name的數(shù)據(jù)庫(kù)。
indexedDB.cmp(a, b) 比較兩個(gè)值的大小。a小于b為-1,a與b相等為0,a大于b為1。
  • IDBCursor

遍歷對(duì)象存儲(chǔ)空間和索引。

屬性/方法 描述
cursor.advice(count) 游標(biāo)向前移動(dòng)的次數(shù)。
cursor.continue(optionalKey) 繼續(xù)沿著當(dāng)前游標(biāo)遍歷方向,找到下一個(gè)能夠匹配key參數(shù)的鍵。如果沒(méi)有指定參數(shù),則根據(jù)游標(biāo)當(dāng)前遍歷方向,移動(dòng)到下一個(gè)位置。
cursor.delete( ) 返回一個(gè)IDBRequest對(duì)象。在一個(gè)獨(dú)立線程內(nèi)刪除游標(biāo)所在位置處的記錄(不移動(dòng)游標(biāo)),隨后將游標(biāo)設(shè)置為null。
cursor.update(newValue) 返回一個(gè)IDBRequest對(duì)象。在一個(gè)獨(dú)立線程內(nèi),使用newValue來(lái)更新對(duì)象存儲(chǔ)內(nèi)游標(biāo)當(dāng)前位置處的值。如果游標(biāo)指向的記錄已被刪除,則利用指定的newValue值創(chuàng)建一個(gè)新的記錄。
cursor.source(只讀) 返回游標(biāo)遍歷的IDBObjectStore或IDBIndex。
cursor.direction(只讀) 游標(biāo)遍歷的方向。next: 從數(shù)據(jù)源開(kāi)始位置遍歷。nextunique: 從數(shù)據(jù)源開(kāi)始位置開(kāi)始遍歷,當(dāng)取值又重復(fù)時(shí),只獲取一次。prev: 從數(shù)據(jù)源的最后位置開(kāi)始遍歷。prevunique: 從數(shù)據(jù)源最后位置開(kāi)始遍歷,當(dāng)取值又重復(fù)時(shí),只獲取一次。
cursor.key(只讀) 返回游標(biāo)所在位置處記錄的鍵。如果游標(biāo)超出范圍,則返回undefined。
cursor.primaryKey(只讀) 返回游標(biāo)當(dāng)前位置的主鍵。如果游標(biāo)當(dāng)前正在迭代或超出迭代范圍,則設(shè)置為undefined。游標(biāo)的主鍵可以是任何數(shù)據(jù)類型。
  • IDBCursorWithValue

遍歷對(duì)象存儲(chǔ)空間和索引并返回游標(biāo)的當(dāng)前值。

屬性/方法 描述
cursor.value 返回游標(biāo)當(dāng)前位置的值。
  • IDBDatabase

表示到數(shù)據(jù)庫(kù)的連接。只能通過(guò)這個(gè)連接來(lái)拿到一個(gè)數(shù)據(jù)庫(kù)事務(wù)。

屬性/方法 描述
IDBDatabase.close( ) 關(guān)閉數(shù)據(jù)庫(kù)。
IDBDatabase.createObjectStore(name, [parameters]) 構(gòu)建一個(gè)存儲(chǔ)空間。parameters是個(gè)可選對(duì)象,有以下兩個(gè)屬性:{keyPath: "id"} 設(shè)置一個(gè)keyPath鍵,被存儲(chǔ)在對(duì)象存儲(chǔ)空間中的所有對(duì)象都必須存在“id”。{autoIncrement: true} 自動(dòng)生成數(shù)字鍵。
IDBDatabase.deleteObjectStore("toDoList") 刪除指定name的數(shù)據(jù)存儲(chǔ)空間。
IDBDatabase.transaction(storeName, [mode]) 立即返回一個(gè)IDBTransaction對(duì)象,然后在一個(gè)獨(dú)立線程內(nèi)開(kāi)啟一個(gè)事務(wù)。第一個(gè)參數(shù)是事務(wù)希望跨越的對(duì)象存儲(chǔ)空間的列表(storeName為字符串?dāng)?shù)組,如果你只需要訪問(wèn)一個(gè)對(duì)象存儲(chǔ)空間,可以用一個(gè)字符串作為storeName)。如果你希望事務(wù)能夠跨越所有的對(duì)象存儲(chǔ)空間你可以傳入一個(gè)空數(shù)組。第二個(gè)參數(shù)定義了事務(wù)的訪問(wèn)類型:readonly(默認(rèn))或者readwrite。
IDBDatabase.name (只讀) 數(shù)據(jù)庫(kù)的名稱。
IDBDatabase.version(只讀) 數(shù)據(jù)庫(kù)的版本號(hào)。
IDBDatabase.objectStoreNames(只讀) 當(dāng)前存儲(chǔ)在連接的數(shù)據(jù)庫(kù)中的對(duì)象名稱的列表.。
IDBDatabase.onabort = function( ) { ... } 當(dāng)數(shù)據(jù)庫(kù)訪問(wèn)被中止時(shí)觸發(fā)。
IDBDatabase.onerror = function( ) { ... } 訪問(wèn)數(shù)據(jù)庫(kù)失敗觸發(fā)。
IDBDatabase.onversionchange = function( ) { ... } 當(dāng)數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化時(shí)觸發(fā)。
  • IDBEnvironment

提供了到客戶端數(shù)據(jù)庫(kù)的訪問(wèn)。它由 window 對(duì)象實(shí)現(xiàn)。

屬性/方法 描述
window.indexedDB 為應(yīng)用程序提供異步訪問(wèn)索引數(shù)據(jù)庫(kù)的功能的機(jī)制。
  • IDBIndex

提供了到索引元數(shù)據(jù)的訪問(wèn)。

屬性/方法 描述
IDBIndex.count( ) 返回一個(gè)IDBRequest對(duì)象,并在一個(gè)單獨(dú)的線程內(nèi)返回范圍內(nèi)鍵的數(shù)目。
IDBIndex.get(key) 返回一個(gè)IDBRequest對(duì)象,并且在一個(gè)單獨(dú)的線程,返回與鍵相關(guān)聯(lián)的記錄。
IDBIndex.getAll([query], [count])(第二版草案) 返回一個(gè)IDBRequest對(duì)象,并且在一個(gè)單獨(dú)的線程,返回在索引中的所有對(duì)象。
IDBIndex.getKey(key) 返回一個(gè)IDBRequest對(duì)象,并且在一個(gè)單獨(dú)的線程,返回主鍵的值。
IDBIndex.getAllKeys([query], [count]) (第二版草案) 立即檢索IDBObjectStore內(nèi)的所有對(duì)象的鍵,設(shè)置為result請(qǐng)求的對(duì)象。
IDBIndex.openCursor([range], [direction]) 返回一個(gè)IDBRequest對(duì)象,然后在一個(gè)獨(dú)立線程內(nèi),在指定鍵范圍內(nèi)創(chuàng)建一個(gè)游標(biāo)。
IDBIndex.openKeyCursor()(第二版草案) 返回一個(gè)IDBRequest對(duì)象,然后在一個(gè)獨(dú)立線程內(nèi),在指定鍵范圍內(nèi)創(chuàng)建一個(gè)游標(biāo),返回的記錄基于索引排序而非主鍵。
IDBIndex.name(只讀) 返回該索引的名稱。
IDBIndex.objectStore(只讀) 此索引引用對(duì)象存儲(chǔ)的名稱
IDBIndex.keyPath(只讀) 返回keyPath的值。
DBIndex.multiEntry(只讀) 返回IDBObjectStore.createIndex方法設(shè)置的multiEntry屬性
IDBIndex.unique(只讀) 返回IDBObjectStore.createIndex方法設(shè)置的unqie屬性
  • IDBKeyRange

定義鍵的范圍。

屬性/方法 描述
IDBKeyRange.bound(lower, upper, [lowerOpen], [upperOpen]) 創(chuàng)建并返回一個(gè)帶有l(wèi)ower和upper界限的鍵范圍。如果lowerOpen或upperOpen為ture,則這個(gè)范圍不包含界限本身(默認(rèn)為false)。
IDBKeyRange.includes( ) 返回一個(gè)布爾值,指示指定的鍵是否鍵范圍內(nèi)。
IDBKeyRange.only( ) 創(chuàng)建一個(gè)包含單個(gè)值的新的鍵范圍。
IDBKeyRange.lowerBound(lower, [lowerOpen]) 創(chuàng)建一個(gè)下限鍵范圍。lowerOpen如果為true,表示范圍不包括界限本身。
IDBKeyRange.upperBound(upper, [upperOpen] ) 創(chuàng)建一個(gè)新的上限鍵范圍。lowerOpen如果為true,表示范圍不包括界限本身。
IDBKeyRange.lower(只讀) 返回下限。
IDBKeyRange.upper(只讀) 返回上限。
IDBKeyRange.lowerOpen(只讀) 如果下限值被包括在鍵范圍,則返回false,否則為true。
IDBKeyRange.upperOpen(只讀) 如果上限值被包括在鍵范圍,則返回false,否則為true。
  • *IDBObjectStore *

表示一個(gè)對(duì)象存儲(chǔ)空間。

屬性/方法 描述
IDBObjectStore.add(value, [key]) 新增存儲(chǔ)對(duì)象。(第2個(gè)可選參數(shù)用來(lái)指定相關(guān)的key,但是試驗(yàn)幾次均不成功,不知道怎么設(shè)置,也不知道是什么一個(gè)效果。若不指定則為null。貌似不知道也不影響使用,不過(guò)若有懂的還望告知!)
IDBObjectStore.clear( ) 創(chuàng)建并立即返回一個(gè)IDBRequest對(duì)象,并在一個(gè)單獨(dú)的線程清除該對(duì)象存儲(chǔ)。該方法會(huì)清除掉存儲(chǔ)索引中的所有記錄,若只想要?jiǎng)h除某項(xiàng)數(shù)據(jù)可以使用IDBObjectStore.delete()或者設(shè)置IDBKeyRange。
IDBObjectStore.get(key) 返回一個(gè)IDBRequest對(duì)象,并在一個(gè)單獨(dú)的線程,返回指定鍵所對(duì)應(yīng)的存儲(chǔ)空間。
IDBObjectStore.delete(keyorKeyRange) 返回一個(gè)IDBRequest對(duì)象,并且在一個(gè)單獨(dú)的線程刪除指定的記錄。
IDBObjectStore.getKey(key)(第二版草案) 返回一個(gè)IDBRequest對(duì)象,并且在一個(gè)單獨(dú)的線程,返回指定的查詢中選擇的鍵。
IDBObjectStore.getAll([query], [count]) 返回一個(gè)IDBRequest包含在對(duì)象存儲(chǔ)的所有對(duì)象指定的參數(shù)或在商店中的所有對(duì)象的匹配,如果沒(méi)有給定參數(shù)的對(duì)象。
IDBObjectStore.getAllKeys([query], [count])(第二版草案) 立即檢索IDBObjectStore內(nèi)的所有對(duì)象的鍵,設(shè)置為result請(qǐng)求的對(duì)象。
IDBObjectStore.createIndex(name, keyPath, [parameters]) 利用指定的name和keyPath參數(shù),創(chuàng)建并返回一個(gè)新的IDBIndex對(duì)象。該方法只能在versionChange事務(wù)模式回調(diào)中調(diào)用。[parameters]:unique: 如果為true,鍵的值不能重復(fù)。multiEntry: 若為true,當(dāng)keyPath解析為數(shù)組時(shí),每個(gè)數(shù)組元素都會(huì)被添加為索引。若為false,索引就只是一個(gè)包含多個(gè)元素的數(shù)組。
IDBObjectStore.deleteIndex(indexName) 刪除一個(gè)索引項(xiàng)。該方法只能在versionChange事務(wù)模式回調(diào)中調(diào)用。
IDBObjectStore.index(indexName) 返回對(duì)象索引中名為indexName的索引。
IDBObjectStore.put(value, [key]) 返回IDBRequest對(duì)象。更新和插入對(duì)象。
IDBObjectStore.openCursor([range], [direction]) 返回IDBRequest對(duì)象。然后在一個(gè)獨(dú)立的線程內(nèi),在對(duì)象存儲(chǔ)的記錄上創(chuàng)建一個(gè)游標(biāo)。
IDBObjectStore.openKeyCursor([range], [direction]) 返回一個(gè)IDBRequest對(duì)象,其結(jié)果將被設(shè)置為IDBCursor可用于通過(guò)匹配結(jié)果進(jìn)行迭代。
IDBObjectStore.count(range) 返回一個(gè)IDBRequest對(duì)象,并且在一個(gè)單獨(dú)的線程,返回匹配提供的key或者range的記錄的總數(shù)。如果沒(méi)有提供參數(shù),它將返回記錄的總數(shù)。
IDBObjectStore.indexNames(只讀) 返回存儲(chǔ)空間上的索引名。
IDBObjectStore.keyPath(只讀) 返回存儲(chǔ)空間上的keyPath。
IDBObjectStore.name 返回該存儲(chǔ)空間的名稱。
IDBObjectStore.transaction(只讀) 返回一個(gè)IDBTransaction對(duì)象。返回此對(duì)象存儲(chǔ)所屬的事務(wù)對(duì)象。
IDBObjectStore.autoIncrement(只讀) 返回autoIncrement在對(duì)象上存儲(chǔ)的值。
  • *IDBOpenDBRequest *

表示一個(gè)打開(kāi)數(shù)據(jù)庫(kù)的請(qǐng)求。

屬性/方法 描述
IDBOpenDBRequest.onblocked = function ( ) { ... } upgradeneeded事件因?yàn)橐粋€(gè)版本的變化被觸發(fā),但數(shù)據(jù)庫(kù)仍然在使用時(shí)觸發(fā)該事件。
IDBOpenDBRequest.onupgradeneeded = function ( ) { ... } 在版本發(fā)生變動(dòng)時(shí)會(huì)觸發(fā)upgradeneeded事件。在這里面,我們可以創(chuàng)建和刪除對(duì)象存儲(chǔ)空間以及構(gòu)建和刪除索引。
  • IDBRequest

提供了到數(shù)據(jù)庫(kù)異步請(qǐng)求結(jié)果和數(shù)據(jù)庫(kù)的訪問(wèn)。這也是在你調(diào)用一個(gè)異步方法時(shí)所得到的。

屬性/方法 描述
IDBRequest.result(只讀) 返回請(qǐng)求的結(jié)果。
IDBRequest.error(只讀) 在請(qǐng)求不成功的情況下返回錯(cuò)誤。
IDBRequest.source(只讀) 返回索引或?qū)ο蟠鎯?chǔ)的來(lái)源。
IDBRequest.transaction(只讀) 返回此對(duì)象存儲(chǔ)所屬的事務(wù)對(duì)象。
IDBRequest.readyState(只讀) 返回請(qǐng)求的狀態(tài)。pending: 該請(qǐng)求被掛起。done: 請(qǐng)求已經(jīng)完成。
IDBRequest.onerror = function ( ) { ... } 處理程序錯(cuò)誤事件。
IDBRequest.onsuccess = function ( ) { ... } 處理程序成功事件。
  • IDBTransaction

表示一個(gè)事務(wù)。你在數(shù)據(jù)庫(kù)上創(chuàng)建一個(gè)事務(wù),指定它的范圍(例如你希望訪問(wèn)哪一個(gè)對(duì)象存儲(chǔ)空間),并確定你希望的訪問(wèn)類型(只讀或?qū)懭耄?/p>

屬性/方法 描述
IDBTransaction.abort 放棄本次連接的transaction的所有修改,如果當(dāng)前的transaction處于回滾完畢或完成狀態(tài),則會(huì)拋出一個(gè)錯(cuò)誤事件。
IDBTransaction.objectStore(name) 獲取對(duì)象存儲(chǔ)空間。
IDBTransaction.db(只讀) 返回與此事務(wù)對(duì)象相關(guān)聯(lián)的數(shù)據(jù)庫(kù)連接。
IDBTransaction.mode(只讀) 返回?cái)?shù)據(jù)模式。readonly/readwrite/versionChange
IDBTransaction.error 返回一個(gè)錯(cuò)誤。
IDBTransaction.onabort = function() { ... } 中止事件。
IDBTransaction.oncomplete = function() { ... }; IDBTransaction接口處理完成時(shí)觸發(fā)。
IDBTransaction.onerror = function() { ... }; IDBTransaction接口處理錯(cuò)誤事件。
  • IDBVersionChangeEvent

表明數(shù)據(jù)庫(kù)的版本號(hào)已經(jīng)改變。

屬性/方法 描述
IDBVersionChangeEvent.oldVersion 返回?cái)?shù)據(jù)庫(kù)的舊版本號(hào)。
IDBVersionChangeEvent.newVersion 返回?cái)?shù)據(jù)庫(kù)的新版本號(hào)。

渣渣英語(yǔ)水平,開(kāi)了3個(gè)翻譯工具,花了幾天時(shí)間總算整理完成。能力有限,可能有一些錯(cuò)漏。若有不足,望請(qǐng)指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容