iT邦幫忙

4

物件倉儲與 IDBObjectStore

timx 2012-07-31 15:29:562738 瀏覽
  • 分享至 

  • xImage
  •  

Indexed Database 採用所謂的物件倉儲(Object Store)進行資料的儲存與維護管理,它的角色就如同一般資料庫裏的資料表(Table),因此在我們可以針對 Indexed Database 中的資料進行儲存維護操作之前,必須先瞭解並且學習如何操作物件倉儲。
物件倉儲是 Indexed Database 儲存資料的主要物件,資料維護的過程中,被新增至物件倉儲、從物件倉儲刪除,或是讀取其中的資料複本等等,而儲存於倉儲中的資料,我們將其稱為記錄(record),每一組有相關記錄的資料稱為一筆記錄。

介面 IDBObjectStore 定義物件倉儲的功能,可以將其歸納為兩大類,分別是針對資料與索引進行維護操作的方法,列舉如下:

資料
put():新增一筆記錄,覆寫相同識別鍵的資料。
add():新增一筆記錄。
delete():刪除資料。
get():透過識別鍵讀取資料。
clear():清空倉儲所有記錄。

索引
createIndex():建立索引。
index():取得索引。
deleteIndex():刪除索引。

物件倉儲透過索引進行資料的搜尋,因此除了資料的維護,你還必須進行相關索引的維護,如此一來才能建構具完整功能的資料庫系統。除了表列的方法,IDBObjectStore 另外還定義了各種屬性以支援倉儲的資訊存取作業,與其有關的列舉如下:

objectStoreNames:回傳 DOMStringList 集合物件,包含所有的物件倉儲名稱集合。
createObjectStore():建立一個新的物件倉儲。
deleteObjectStore():刪除一個特定的物件倉儲。

第一個 objectStoreNames 是屬性成員,它回傳的 DOMStringList 集合物件包含目前資料庫中,所有的物件倉儲名稱,透過這個屬性的引用,我們可以經由迴圈針對 DOMStringList 進行列舉,取得所有的物件倉儲。

方法成員 createObjectStore() 支援物件倉儲的建立,當你要建立一個新的物件倉儲,必須調用此方法並且指定倉儲的名稱,執行完畢後將回傳一個指定名稱的 IDBObjectStore 型態物件,此型態定義了物件倉儲。

表列的最後一個方法成員 deleteObjectStore() 支援物件倉儲的刪除作業,只要指定在建立倉儲時指定的名稱,即可將其刪除。

讀者要特別注意,createObjectStore() 與 deleteObjectStore() 等異動倉儲的相關方法,無法直接調用,它們必須在設定資料庫版本形成的異動交易裏執行,也就是前述討論設定版本的 success 事件處理器,如下式:

var vrequest = db.setVersion(version);
vrequest.onsuccess = function (event) {
    // 在這裏建立或是刪除物件倉儲 …
};

其中於onsuccess 事件屬性設定的函式中,進行物件倉儲的維護作業,在這個函式區域之外執行的相關作業都將沒有效果。

以上簡要列舉說明相關的方法與屬性等成員,後續逐一討論相關的運用。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Albert
iT邦高手 1 級 ‧ 2012-08-01 20:30:31

timx提到:
資料
put():新增一筆記錄,覆寫相同識別鍵的資料。
add():新增一筆記錄。
delete():刪除資料。
get():透過識別鍵讀取資料。
clear():清空倉儲所有記錄。

索引
createIndex():建立索引。
index():取得索引。
deleteInd...(恕刪)

物件
還是關連
關連物件
還是純物件
純學術
還是純效率
....

我要留言

立即登入留言