成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

IndexedDB

AlienZHOU / 2765人閱讀

摘要:對象存儲(chǔ)對象存儲(chǔ)相當(dāng)于保存數(shù)據(jù)的桶。其思想是每個(gè)需要持久化的數(shù)據(jù)類型都有一個(gè)對象存儲(chǔ)。對象存儲(chǔ)只能在事件處理期間創(chuàng)建。創(chuàng)建對象存儲(chǔ)要?jiǎng)?chuàng)建對象存儲(chǔ),首先應(yīng)該檢查它是否存在。定義主鍵在對象存儲(chǔ)中,每條數(shù)據(jù)都必須有一種能夠唯一標(biāo)識自己的方式。

IndexedDB是一個(gè)功能強(qiáng)大且高度靈活的存儲(chǔ)系統(tǒng),你可以使用它在用戶瀏覽器中存儲(chǔ)你希望存儲(chǔ)的任何數(shù)據(jù)。不過,出色的功能和靈活性致使其API不像Web存儲(chǔ)那么友好。你還會(huì)發(fā)現(xiàn),移動(dòng)端瀏覽器對IndexedDB的支持還不是很友好,即使支持。

IndexedDB關(guān)鍵術(shù)語 數(shù)據(jù)庫

IndexedDB的最上層是數(shù)據(jù)庫的概念。

對象存儲(chǔ)

對象存儲(chǔ)相當(dāng)于保存數(shù)據(jù)的桶。如果你使用過傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,則可以將對象存儲(chǔ)想象成一張表。但是IndexedDB可以更靈活地存儲(chǔ)數(shù)據(jù)。

索引

索引是一種從對象存儲(chǔ)中檢索數(shù)據(jù)的方式。

使用數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫時(shí),需要提供一個(gè)名稱和版本。數(shù)據(jù)庫結(jié)構(gòu)(指對象存儲(chǔ)和索引,而不是實(shí)際數(shù)據(jù)本身)只能在更改版本時(shí)臨時(shí)調(diào)整。
在IndexDB中,你所做的所有操作都是異步的。因此,打開數(shù)據(jù)庫并不意味著立即就可以使用,而是需要在響應(yīng)一個(gè)事件之后才可以使用。打開數(shù)據(jù)庫操作可以觸發(fā)的事件包括success、error、upgradeneeded和blocked.
其中upgradeneeded在用戶首次訪問數(shù)據(jù)庫或者版本號發(fā)生變化時(shí)出發(fā),這是設(shè)置數(shù)據(jù)結(jié)構(gòu)的地方。bloced在數(shù)據(jù)庫不可用或者無法使用時(shí)被觸發(fā)。

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方法打開數(shù)據(jù)庫。第一個(gè)參數(shù)是數(shù)據(jù)庫名稱。由于一個(gè)IndexedDB數(shù)據(jù)庫只提供給一個(gè)網(wǎng)站使用,因此不用擔(dān)心該名稱和其他數(shù)據(jù)庫的名稱相沖突。

使用對象存儲(chǔ)

前面說過,indexedDB對象存儲(chǔ)有點(diǎn)像SQL數(shù)據(jù)庫表。它應(yīng)該只包含一種“類型”的數(shù)據(jù),比如"people""notes"或其他對象的實(shí)例。其思想是每個(gè)需要持久化的數(shù)據(jù)類型都有一個(gè)對象存儲(chǔ)。
對象存儲(chǔ)只能在upgradeneeded事件處理期間創(chuàng)建。假設(shè)你設(shè)計(jì)的數(shù)據(jù)庫支持兩種對象存儲(chǔ)。數(shù)據(jù)之后,你又決定存戶第三種類型的數(shù)據(jù)。你需要做兩件事:第一,更改版本號;第二,編寫代碼,增加新的對象存儲(chǔ)。

創(chuàng)建對象存儲(chǔ)

要?jiǎng)?chuàng)建對象存儲(chǔ),首先應(yīng)該檢查它是否存在??梢岳脭?shù)據(jù)庫變量(從打開數(shù)據(jù)庫操作的事件處理器獲得)訪問objectStoreNames屬性。該屬性是一個(gè)DOMStringList實(shí)例,你可以查看它是否已經(jīng)包含了某個(gè)值。如果沒有,則可以調(diào)用createObjectStore("name", options)方法創(chuàng)建對象存儲(chǔ)。

openRequest.onupgradeneeded = function(e) {
    var thisDB = e.target.result;
    if(!thisDB.objectStoreNames.contains("firstOS")) {
        thisDB.createObjectStore("firstOS");
    }
}
定義主鍵

在對象存儲(chǔ)中,每條數(shù)據(jù)都必須有一種能夠唯一標(biāo)識自己的方式。在定義對象存儲(chǔ)時(shí),你可以定義如何唯一地標(biāo)識數(shù)據(jù)。
實(shí)際上,主要有兩種定義方式。一種是定義一個(gè)key path,它本質(zhì)上是一個(gè)永遠(yuǎn)存在并且包含唯一信息的屬性。另一種是使用key generator,它本質(zhì)上是一種生成唯一值的方式。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107550.html

相關(guān)文章

  • 初探IndexedDB

    背景 隨著前端技術(shù)日新月異地快速發(fā)展,web應(yīng)用功能和體驗(yàn)也逐漸發(fā)展到可以和原生應(yīng)用媲美的程度,前端緩存技術(shù)的應(yīng)用對這起到了不可磨滅的貢獻(xiàn),因此想一探前端的緩存技術(shù),這篇文章主要會(huì)介紹在日常開發(fā)中比較少接觸的IndexedDB IndexedDB 什么是IndexedDB IndexedDB簡單理解就是前端數(shù)據(jù)庫,提供了一種在用戶瀏覽器中持久存儲(chǔ)數(shù)據(jù)的方法,但是和前端關(guān)系型數(shù)據(jù)不同的是,Index...

    jsyzchen 評論0 收藏0
  • IndexedDB使用與出坑指南

    摘要:在不指定的情況下,默認(rèn)版本號為。具體示例如下在需要更新數(shù)據(jù)庫的模式時(shí),需要更新版本號。此時(shí)我們指定一個(gè)高于之前版本的版本號,就會(huì)觸發(fā)事件。數(shù)據(jù)操作事務(wù)在中,我們也能夠使用事務(wù)來進(jìn)行數(shù)據(jù)庫的操作。 概述 本文通過對IndexedDB的使用方法和使用場景進(jìn)行相關(guān)介紹,對常見的問題進(jìn)行解答。 同時(shí),因?yàn)镸DN中的相關(guān)文檔缺乏相關(guān)邏輯性,所以不容易理解。本文將通過項(xiàng)目中常見的數(shù)據(jù)存儲(chǔ)和操作需求...

    陳偉 評論0 收藏0
  • indexedDB入門

    摘要:概述是一個(gè)事務(wù)型數(shù)據(jù)庫系統(tǒng),類似于基于的。然而不同的是它使用固定列表,是一個(gè)基于的面向?qū)ο蟮臄?shù)據(jù)庫。參考文檔瀏覽器數(shù)據(jù)庫入門教程 概述 IndexedDB 是一個(gè)事務(wù)型數(shù)據(jù)庫系統(tǒng),類似于基于 SQL 的 RDBMS。 然而不同的是它使用固定列表,IndexedDB 是一個(gè)基于 JavaScript 的面向?qū)ο蟮臄?shù)據(jù)庫?,F(xiàn)有的瀏覽器數(shù)據(jù)儲(chǔ)存方案,都不適合儲(chǔ)存大量數(shù)據(jù):Cookie 的大小...

    awesome23 評論0 收藏0
  • HTML5 進(jìn)階系列:indexedDB 數(shù)據(jù)庫

    摘要:版本號必須為整數(shù)更新版本,打開版本為的數(shù)據(jù)庫新數(shù)據(jù)庫版本號為我們通過監(jiān)聽請求對象的事件來定義數(shù)據(jù)庫版本更新時(shí)執(zhí)行的方法。 前言 在 HTML5 的本地存儲(chǔ)中,有一種叫 indexedDB 的數(shù)據(jù)庫,該數(shù)據(jù)庫是一種存儲(chǔ)在客戶端本地的 NoSQL 數(shù)據(jù)庫,它可以存儲(chǔ)大量的數(shù)據(jù)。從上篇:HTML5 進(jìn)階系列:web Storage ,我們知道 web Storage 可以方便靈活的在本地存取...

    philadelphia 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<