摘要:對象存儲對象存儲相當于保存數據的桶。其思想是每個需要持久化的數據類型都有一個對象存儲。對象存儲只能在事件處理期間創建。創建對象存儲要創建對象存儲,首先應該檢查它是否存在。定義主鍵在對象存儲中,每條數據都必須有一種能夠唯一標識自己的方式。
IndexedDB是一個功能強大且高度靈活的存儲系統,你可以使用它在用戶瀏覽器中存儲你希望存儲的任何數據。不過,出色的功能和靈活性致使其API不像Web存儲那么友好。你還會發現,移動端瀏覽器對IndexedDB的支持還不是很友好,即使支持。
IndexedDB關鍵術語 數據庫IndexedDB的最上層是數據庫的概念。
對象存儲對象存儲相當于保存數據的桶。如果你使用過傳統的關系型數據庫,則可以將對象存儲想象成一張表。但是IndexedDB可以更靈活地存儲數據。
索引索引是一種從對象存儲中檢索數據的方式。
使用數據庫創建數據庫時,需要提供一個名稱和版本。數據庫結構(指對象存儲和索引,而不是實際數據本身)只能在更改版本時臨時調整。
在IndexDB中,你所做的所有操作都是異步的。因此,打開數據庫并不意味著立即就可以使用,而是需要在響應一個事件之后才可以使用。打開數據庫操作可以觸發的事件包括success、error、upgradeneeded和blocked.
其中upgradeneeded在用戶首次訪問數據庫或者版本號發生變化時出發,這是設置數據結構的地方。bloced在數據庫不可用或者無法使用時被觸發。
function idbOK(){ return "indexedDB" in window; } $(documengt).ready(function() { if(!idbOK) return; var openRequest = indexedDB.open("ora_idb1", 1); openRequest.onsuccess = function(e) { var db = e.target.result; } });
上述代碼中,首先檢查瀏覽器是否支持IndexedDB。如果支持,則使用indexedDB.open方法打開數據庫。第一個參數是數據庫名稱。由于一個IndexedDB數據庫只提供給一個網站使用,因此不用擔心該名稱和其他數據庫的名稱相沖突。
使用對象存儲前面說過,indexedDB對象存儲有點像SQL數據庫表。它應該只包含一種“類型”的數據,比如"people""notes"或其他對象的實例。其思想是每個需要持久化的數據類型都有一個對象存儲。
對象存儲只能在upgradeneeded事件處理期間創建。假設你設計的數據庫支持兩種對象存儲。數據之后,你又決定存戶第三種類型的數據。你需要做兩件事:第一,更改版本號;第二,編寫代碼,增加新的對象存儲。
要創建對象存儲,首先應該檢查它是否存在。可以利用數據庫變量(從打開數據庫操作的事件處理器獲得)訪問objectStoreNames屬性。該屬性是一個DOMStringList實例,你可以查看它是否已經包含了某個值。如果沒有,則可以調用createObjectStore("name", options)方法創建對象存儲。
openRequest.onupgradeneeded = function(e) { var thisDB = e.target.result; if(!thisDB.objectStoreNames.contains("firstOS")) { thisDB.createObjectStore("firstOS"); } }定義主鍵
在對象存儲中,每條數據都必須有一種能夠唯一標識自己的方式。在定義對象存儲時,你可以定義如何唯一地標識數據。
實際上,主要有兩種定義方式。一種是定義一個key path,它本質上是一個永遠存在并且包含唯一信息的屬性。另一種是使用key generator,它本質上是一種生成唯一值的方式。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/51866.html
背景 隨著前端技術日新月異地快速發展,web應用功能和體驗也逐漸發展到可以和原生應用媲美的程度,前端緩存技術的應用對這起到了不可磨滅的貢獻,因此想一探前端的緩存技術,這篇文章主要會介紹在日常開發中比較少接觸的IndexedDB IndexedDB 什么是IndexedDB IndexedDB簡單理解就是前端數據庫,提供了一種在用戶瀏覽器中持久存儲數據的方法,但是和前端關系型數據不同的是,Index...
摘要:在不指定的情況下,默認版本號為。具體示例如下在需要更新數據庫的模式時,需要更新版本號。此時我們指定一個高于之前版本的版本號,就會觸發事件。數據操作事務在中,我們也能夠使用事務來進行數據庫的操作。 概述 本文通過對IndexedDB的使用方法和使用場景進行相關介紹,對常見的問題進行解答。 同時,因為MDN中的相關文檔缺乏相關邏輯性,所以不容易理解。本文將通過項目中常見的數據存儲和操作需求...
摘要:概述是一個事務型數據庫系統,類似于基于的。然而不同的是它使用固定列表,是一個基于的面向對象的數據庫。參考文檔瀏覽器數據庫入門教程 概述 IndexedDB 是一個事務型數據庫系統,類似于基于 SQL 的 RDBMS。 然而不同的是它使用固定列表,IndexedDB 是一個基于 JavaScript 的面向對象的數據庫。現有的瀏覽器數據儲存方案,都不適合儲存大量數據:Cookie 的大小...
摘要:版本號必須為整數更新版本,打開版本為的數據庫新數據庫版本號為我們通過監聽請求對象的事件來定義數據庫版本更新時執行的方法。 前言 在 HTML5 的本地存儲中,有一種叫 indexedDB 的數據庫,該數據庫是一種存儲在客戶端本地的 NoSQL 數據庫,它可以存儲大量的數據。從上篇:HTML5 進階系列:web Storage ,我們知道 web Storage 可以方便靈活的在本地存取...
閱讀 3878·2021-09-27 13:36
閱讀 4554·2021-09-22 15:12
閱讀 3063·2021-09-13 10:29
閱讀 1826·2021-09-10 10:50
閱讀 2360·2021-09-03 10:43
閱讀 518·2019-08-29 17:10
閱讀 442·2019-08-26 13:52
閱讀 3249·2019-08-23 14:37