## 第二節:基本概念
`IndexedDB`是一個比較復雜的 API,涉及不少概念。它把不同的實體,抽象成一個個對象接口。學習這個 API,就是學習它的各種對象接口。
* 數據庫:`IDBDatabase`對象
* 對象倉庫:`IDBObjectStore`對象
* 索引: `IDBIndex`對象
* 事務: `IDBTransaction`對象
* 操作請求:`IDBRequest`對象
* 指針: `IDBCursor`對象
* 主鍵集合:`IDBKeyRange`對象
下面是一些主要的概念。
**(1)數據庫**
數據庫是一系列相關數據的容器。每個域名(嚴格的說,是協議 + 域名 + 端口)都可以新建任意多個數據庫。
`IndexedDB`數據庫有版本的概念。同一個時刻,只能有一個版本的數據庫存在。如果要修改數據庫結構(新增或刪除表、索引或者主鍵),只能通過升級數據庫版本完成。
**(2)對象倉庫**
每個數據庫包含若干個對象倉庫(object store)。它類似于關系型數據庫的表格。
**(3)數據記錄**
對象倉庫保存的是數據記錄。每條記錄類似于關系型數據庫的行,但是只有主鍵和數據體兩部分。
主鍵用來建立默認的索引,必須是不同的,否則會報錯。主鍵可以是數據記錄里面的一個屬性,也可以指定為一個遞增的整數編號。數據體可以是任意數據類型,不限于對象。
~~~
{ id: 1, text: 'foo' }
~~~
上面的對象中,`id`屬性可以當作主鍵。
**(4)索引**
為了加速數據的檢索,可以在對象倉庫里面,為不同的屬性建立索引。
**(5)事務**
數據記錄的讀寫和刪改,都要通過事務完成。事務對象提供`error`、`abort`和`complete`三個事件,用來監聽操作結果。
- 第一章:音視頻
- 第一節:概述
- 第二節:媒體元素
- 第三節:視頻元素
- 第四節:音頻元素
- 第四節:事件
- 第二章:高德地圖
- 第三章:Storage 接口
- 第一節:概述
- 第二節:屬性和方法
- 第三節:事件
- 第四章:IndexedDB
- 第一節:概述
- 第二節:基本概念
- 第三節:indexedDB 對象
- 第四節:IDBRequest 對象
- 第五節:IDBDatabase 對象
- 第六節:IDBObjectStore 對象
- 第七節:IDBTransaction 對象
- 第八節:IDBIndex 對象
- 第九節:IDBCursor 對象
- 第十節:IDBKeyRange 對象
- 第十一節:操作流程
- 第五章:Canvas
- 第一節:概述
- 第二節:繪制圖像
- 第一課時:路徑
- 第二課時:線型
- 第三課時:矩形
- 第四課時:弧線
- 第五課時:文本
- 第六課時:漸變色和圖像填充
- 第七課時:陰影
- 第三節:圖像處理
- 第一課時:寫入圖像
- 第二課時:像素讀寫
- 第三課時:保存和恢復
- 第四課時:畫布
- 第五課時:圖像變換
- 第四節:元素方法
- 第一課時:toDataURL()
- 第二課時:toBlob()
- 第五節:使用實例
- 第一課時:動畫效果
- 第二課時:像素處理