欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

前端數(shù)據(jù)庫(kù)IndexedDB基礎(chǔ)使用的方法步驟

 更新時(shí)間:2025年07月09日 09:27:59   作者:程序員付杰  
IndexedDB是一種在瀏覽器端存儲(chǔ)數(shù)據(jù)的方式,既然稱(chēng)之為DB,是因?yàn)樗S富了客戶(hù)端的查詢(xún)方式,并且因?yàn)槭潜镜卮鎯?chǔ),可以有效的減少網(wǎng)絡(luò)對(duì)頁(yè)面數(shù)據(jù)的影響,這篇文章主要介紹了前端數(shù)據(jù)庫(kù)IndexedDB?基礎(chǔ)使用的方法步驟,需要的朋友可以參考下

前言

在現(xiàn)代 Web 開(kāi)發(fā)中,隨著應(yīng)用程序復(fù)雜度的增加,對(duì)本地存儲(chǔ)的需求也越來(lái)越高。雖然 localStorage 和 sessionStorage 可以滿足一些簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)需求,但當(dāng)需要存儲(chǔ)大量結(jié)構(gòu)化數(shù)據(jù)或進(jìn)行復(fù)雜查詢(xún)時(shí),它們就顯得力不從心了。這時(shí)候,IndexedDB 就成為了一個(gè)強(qiáng)大的選擇。本文將帶你全面了解 IndexedDB 的使用,從基礎(chǔ)操作到高級(jí)技巧,助你在項(xiàng)目中靈活應(yīng)用。

1. IndexedDB 是什么?為啥要用它?

首先,IndexedDB 是瀏覽器內(nèi)置的一個(gè) NoSQL 數(shù)據(jù)庫(kù)。它和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)不同,更像是一個(gè)鍵值對(duì)存儲(chǔ),但功能更強(qiáng)大。它的特點(diǎn)可以用幾個(gè)關(guān)鍵詞來(lái)概括:

  • 大容量:通??梢源鎯?chǔ)幾百 MB 甚至 GB 級(jí)別的數(shù)據(jù),非常適合需要離線存儲(chǔ)的應(yīng)用。
  • 異步操作:所有操作都是非阻塞的,不會(huì)讓頁(yè)面卡頓。
  • 復(fù)雜查詢(xún):支持索引和游標(biāo),可以高效地查詢(xún)和遍歷數(shù)據(jù)。
  • 事務(wù)支持:可以確保數(shù)據(jù)的完整性和一致性。

舉個(gè)簡(jiǎn)單的例子,如果你在開(kāi)發(fā)一個(gè)需要用戶(hù)離線使用的筆記應(yīng)用,或者一個(gè)需要存儲(chǔ)大量用戶(hù)數(shù)據(jù)的復(fù)雜表單,IndexedDB 絕對(duì)是你的好幫手!

2. indexedDB 數(shù)據(jù)庫(kù)的使用

2.1. 查看indexedDB

indexDB 其實(shí)是 window 對(duì)象的一個(gè)屬性。 也就是全局變量。 因此我們可以在控制臺(tái)直接輸出

通過(guò)在控制臺(tái)中輸出 indexDB 對(duì)象,我們可以一目了然地看到它所提供的各種方法。

2.2. 打開(kāi)和創(chuàng)建數(shù)據(jù)庫(kù)

首先要掌握的就是它的核心方法之一 的open()。open() 方法用于打開(kāi)或創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),并返回一個(gè) IDBOpenDBRequest 對(duì)象,這個(gè)對(duì)象代表了異步操作的請(qǐng)求。通過(guò)IDBOpenDBRequest ,我們可以監(jiān)聽(tīng)數(shù)據(jù)庫(kù)的打開(kāi)狀態(tài),并進(jìn)一步執(zhí)行后續(xù)操作。

Open() 參數(shù)

讓我們來(lái)詳細(xì)了解一下 open() 方法的兩個(gè)參數(shù):

  1. 第一個(gè)參數(shù)(必傳):數(shù)據(jù)庫(kù)名稱(chēng)。用于指定你要打開(kāi)或創(chuàng)建的數(shù)據(jù)庫(kù)的名稱(chēng)。
  2. 第二個(gè)參數(shù)(可選):數(shù)據(jù)庫(kù)版本號(hào)。不傳默認(rèn)值為 1。

在我們成功創(chuàng)建數(shù)據(jù)庫(kù)后,可以通過(guò)瀏覽器的開(kāi)發(fā)者工具中 Application 面板直觀地看到數(shù)據(jù)庫(kù)的名稱(chēng)以及當(dāng)前版本號(hào)

當(dāng)你需要升級(jí)數(shù)據(jù)庫(kù)結(jié)構(gòu)(例如新增或修改對(duì)象存儲(chǔ)空間)時(shí),可以通過(guò)指定一個(gè)更高的版本號(hào)來(lái)觸發(fā) upgradeneeded 事件,進(jìn)而完成數(shù)據(jù)庫(kù)的更新操作。

這兩個(gè)參數(shù)為 open() 方法提供了靈活性,既確保了操作的明確性,也為數(shù)據(jù)庫(kù)的版本管理提供了支持。??

Open() 返回值

open() 方法會(huì)返回一個(gè) IDBOpenDBRequest 對(duì)象,這是因?yàn)?IndexedDB 中的所有操作(包括打開(kāi)、讀取、編輯和刪除) ,都是異步執(zhí)行的。由于這些操作可能需要一定的時(shí)間才能完成,無(wú)法立即返回結(jié)果,因此 IDBOpenDBRequest 對(duì)象提供了一系列事件綁定機(jī)制,方便我們?cè)诓僮鞯牟煌A段(如成功、失敗或數(shù)據(jù)庫(kù)需要升級(jí)時(shí))進(jìn)行相應(yīng)的處理。通過(guò)監(jiān)聽(tīng)這些事件,開(kāi)發(fā)者可以更靈活地控制數(shù)據(jù)庫(kù)操作的流程和響應(yīng)。

在 IndexedDB 中,版本號(hào)是一個(gè)重要的機(jī)制,用于管理數(shù)據(jù)庫(kù)的更新和變更。當(dāng)我們嘗試打開(kāi)一個(gè)數(shù)據(jù)庫(kù)時(shí),系統(tǒng)會(huì)檢查當(dāng)前是否存在該數(shù)據(jù)庫(kù):

如果數(shù)據(jù)庫(kù)不存在,IndexedDB 會(huì)自動(dòng)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),并將其版本號(hào)初始化為 1。

如果數(shù)據(jù)庫(kù)已存在,則會(huì)根據(jù)傳入的版本號(hào)與當(dāng)前保存的版本號(hào)進(jìn)行比較:

  • 如果傳入的版本號(hào)比當(dāng)前版本更高,IndexedDB 會(huì)觸發(fā)upgradeneeded事件,此時(shí)開(kāi)發(fā)者可以在事件回調(diào)中執(zhí)行數(shù)據(jù)庫(kù)的更新操作(例如創(chuàng)建、修改或刪除對(duì)象存儲(chǔ)表)。
  • 傳入的版本號(hào)不能低于當(dāng)前版本號(hào),因?yàn)?IndexedDB 的版本號(hào)是單向遞增的,不允許回退到舊版本。

注意,這里的版本號(hào)是一個(gè)整數(shù)。如果你傳入一個(gè)float,那么將會(huì)對(duì)該float進(jìn)行取整操作。

2.3. 創(chuàng)建一個(gè)對(duì)象存儲(chǔ)表

當(dāng)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)或?qū)ΜF(xiàn)有數(shù)據(jù)庫(kù)進(jìn)行版本升級(jí)時(shí),IndexedDB 會(huì)觸發(fā)一個(gè) onupgradeneeded 事件。在該事件中,通過(guò)訪問(wèn) event.target.result,我們可以獲取到 IDBDatabase 實(shí)例。借助這個(gè)實(shí)例,開(kāi)發(fā)者可以執(zhí)行諸如創(chuàng)建、修改或刪除對(duì)象存儲(chǔ)表等數(shù)據(jù)庫(kù)升級(jí)操作,從而完成數(shù)據(jù)庫(kù)結(jié)構(gòu)的更新。

其基本使用方式如下所示:

創(chuàng)建成功后,就可以在控制臺(tái)中查看到創(chuàng)建的存儲(chǔ)空間

createObjectStore 參數(shù)

  1. name:第一個(gè)參數(shù), 表示儲(chǔ)存表的名稱(chēng)
  2. keyOptions: 第二個(gè)參數(shù)(可選參數(shù)), 是配置對(duì)象,
  • keyPath: 儲(chǔ)存數(shù)據(jù)的標(biāo)識(shí)符
  • autoIncrement:默認(rèn)為false,若為true,則會(huì)自動(dòng)在儲(chǔ)存的對(duì)象上添加標(biāo)識(shí)符屬性,并附上一個(gè)自增的正數(shù)值(1,2,3,4…)

3. IndexedDB 核心操作

3.1. 開(kāi)啟事務(wù)獲取存儲(chǔ)對(duì)象

indexedDB的所有操作都需要在事務(wù)中,我們看一個(gè)開(kāi)啟事務(wù)的操作:

  1. 第一個(gè)參數(shù)是一個(gè)數(shù)組,數(shù)組中包含此事務(wù)將會(huì)處理的存儲(chǔ)對(duì)象名稱(chēng);
  2. 第二個(gè)參數(shù)是事務(wù)的處理模式,比如 readonlyreadwrite,分別表示只讀和讀寫(xiě)模式。

一旦事務(wù)創(chuàng)建成功,我們可以監(jiān)聽(tīng)事務(wù)的 completeerror 事件,以處理事務(wù)完成或出錯(cuò)的情況。接下來(lái),我們可以通過(guò)事務(wù)對(duì)象對(duì)指定的 myObjectStore 執(zhí)行操作

在操作數(shù)據(jù)之前,咱們得先通過(guò)事務(wù)調(diào)用 objectStore 方法,拿到要操作的存儲(chǔ)對(duì)象。這個(gè)方法會(huì)返回一個(gè) IDBDatabase 類(lèi)型的存儲(chǔ)對(duì)象實(shí)例。有了這個(gè)實(shí)例,咱們就可以調(diào)用它的各種方法來(lái)操作數(shù)據(jù)了。

通過(guò)輸出的存儲(chǔ)對(duì)象實(shí)例,我們可以直接查看其提供的各種操作方法,從而通過(guò)這些方法操作存儲(chǔ)數(shù)據(jù)。

3.2. 添加數(shù)據(jù)

獲取到存儲(chǔ)對(duì)象后, 就可以調(diào)用它提供的 add 方法來(lái)新增數(shù)據(jù)。

添加數(shù)據(jù)示例:

數(shù)據(jù)添加成功后,你可以去查看數(shù)據(jù)表里的內(nèi)容。這時(shí)候你會(huì)發(fā)現(xiàn),數(shù)據(jù)里多了一個(gè) id 屬性,這就是這條數(shù)據(jù)的唯一標(biāo)識(shí)符。這是因?yàn)榍懊嬖蹅冊(cè)O(shè)置了自動(dòng)生成 id 的功能。如果沒(méi)設(shè)置的話,那就得手動(dòng)給數(shù)據(jù)添加一個(gè) id 屬性了。但要注意,id 的值必須唯一,不能和其他數(shù)據(jù)重復(fù),不然添加就會(huì)失敗。

3.3. 更新數(shù)據(jù)

要更新數(shù)據(jù),可以使用put()方法。使用 put 方法更新數(shù)據(jù)時(shí),如果數(shù)據(jù)不存在則會(huì)添加。

3.4. 查詢(xún)數(shù)據(jù)

通過(guò) get 方法或游標(biāo)查詢(xún)數(shù)據(jù)。調(diào)用get方法需要傳入主鍵id

3.5. 刪除數(shù)據(jù)

通過(guò)delete方法刪除單個(gè)條目或者clear 方法刪除整個(gè)對(duì)象。

使用 delete 方法刪除數(shù)據(jù)時(shí), 需要傳入主鍵, 根據(jù)主鍵刪除。

總結(jié)

本文全面介紹了 IndexedDB 的核心概念和使用方法,包括數(shù)據(jù)庫(kù)的創(chuàng)建與升級(jí)、對(duì)象存儲(chǔ)表的構(gòu)建、數(shù)據(jù)的增刪改查以及事務(wù)管理。通過(guò)詳細(xì)的代碼示例和清晰的步驟說(shuō)明,讀者可以快速上手并靈活應(yīng)用 IndexedDB,滿足復(fù)雜 Web 應(yīng)用對(duì)本地存儲(chǔ)的需求。無(wú)論是離線應(yīng)用開(kāi)發(fā)還是大容量數(shù)據(jù)管理,IndexedDB 都能成為你的得力助手。

到此這篇關(guān)于前端數(shù)據(jù)庫(kù)IndexedDB基礎(chǔ)使用的文章就介紹到這了,更多相關(guān)前端數(shù)據(jù)庫(kù)IndexedDB使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Sybase 復(fù)制與熱切換數(shù)據(jù)

    Sybase 復(fù)制與熱切換數(shù)據(jù)

    SYBASE復(fù)制服務(wù)器(Sybase Replication Server)用來(lái)滿足日益發(fā)展的企業(yè)客戶(hù)/服務(wù)器計(jì)算機(jī)環(huán)境的需要。自從復(fù)制服務(wù)器被廣泛應(yīng)用以來(lái),已成為企業(yè)范圍內(nèi)客戶(hù)/服務(wù)器應(yīng)用模式的基礎(chǔ)。
    2009-06-06
  • sql語(yǔ)句創(chuàng)建外鍵關(guān)聯(lián)的完整實(shí)例

    sql語(yǔ)句創(chuàng)建外鍵關(guān)聯(lián)的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于sql語(yǔ)句創(chuàng)建外鍵關(guān)聯(lián)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Navicat快速導(dǎo)入和導(dǎo)出sql文件的方法

    Navicat快速導(dǎo)入和導(dǎo)出sql文件的方法

    Navicat是MySQL非常好用的可視化管理工具,功能非常強(qiáng)大,能滿足我們?nèi)粘?shù)據(jù)庫(kù)開(kāi)發(fā)的所有需求。今天教大家如何導(dǎo)入和導(dǎo)出SQL文件,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • StoneDB主從配置及切換實(shí)踐方案

    StoneDB主從配置及切換實(shí)踐方案

    這篇文章主要介紹了StoneDB主從配置及切換實(shí)踐方案的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • sql join on 用法

    sql join on 用法

    非常不錯(cuò)使用join on實(shí)現(xiàn)數(shù)據(jù)庫(kù)字段的連接輸出效果。
    2009-07-07
  • 14張圖看懂什么是區(qū)塊鏈技術(shù)

    14張圖看懂什么是區(qū)塊鏈技術(shù)

    這篇文章主要為大家分享了14張圖,幫助大家看懂什么是區(qū)塊鏈技術(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Dbeaver如何從一個(gè)數(shù)據(jù)庫(kù)復(fù)制表到另外一個(gè)數(shù)據(jù)庫(kù)

    Dbeaver如何從一個(gè)數(shù)據(jù)庫(kù)復(fù)制表到另外一個(gè)數(shù)據(jù)庫(kù)

    在數(shù)據(jù)庫(kù)管理中,導(dǎo)出表是一項(xiàng)常見(jiàn)操作,可以通過(guò)特定的工具或數(shù)據(jù)庫(kù)自帶的功能實(shí)現(xiàn),步驟包括:1.在數(shù)據(jù)庫(kù)管理軟件中找到需導(dǎo)出的表,右鍵選擇導(dǎo)出數(shù)據(jù),2.選擇目標(biāo)數(shù)據(jù)庫(kù),并進(jìn)行表映射設(shè)置,3.根據(jù)需求調(diào)整導(dǎo)出參數(shù),4.執(zhí)行操作完成數(shù)據(jù)導(dǎo)出
    2024-10-10
  • GBase?8s數(shù)據(jù)庫(kù)主鍵約束、唯一約束和唯一索引的區(qū)別解析

    GBase?8s數(shù)據(jù)庫(kù)主鍵約束、唯一約束和唯一索引的區(qū)別解析

    這篇文章主要介紹了GBase?8s數(shù)據(jù)庫(kù)主鍵約束、唯一約束和唯一索引的區(qū)別,通過(guò)示例代碼給大家說(shuō)明這三者之間的區(qū)別,感興趣的朋友一起看看吧
    2022-02-02
  • SQL中NTEXT字段內(nèi)容顯示<long text>的原因

    SQL中NTEXT字段內(nèi)容顯示<long text>的原因

    SQL中NTEXT字段內(nèi)容顯示<long text>的原因...
    2007-03-03
  • 詳解Navicat Premium基本使用

    詳解Navicat Premium基本使用

    Navicat是一套數(shù)據(jù)庫(kù)管理工具,專(zhuān)為簡(jiǎn)化數(shù)據(jù)庫(kù)的管理及降低系統(tǒng)管理成本而設(shè)。這篇文章主要介紹了詳解Navicat Premium基本使用,需要的朋友可以參考下
    2020-11-11

最新評(píng)論