HTML5 Indexed Database API 入門(9) - 交易

HTML5 Indexed Database API 入門系列

Indexed Database 採用所謂的物件倉儲(Object Store)進行資料的儲存與維護管理作業,儲存於倉儲中的資料,我們將其稱為記錄(record),每一組資料是一筆紀錄,並且有其專屬的識別鍵值,同一個物件倉儲中,不能有重複的鍵值。

資料維護作業必須另外透過 IDBTransaction 型態的交易物件進行處理,此物件經由引用 IDBDatabase物件的 transaction() 方法取得,考慮以下的程式碼:

var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);

db是開啟的資料庫,參數 objectStoreName 為此交易物件中所要操作的物件倉儲名稱清單,接下來就可以指定所要操作的特定物件倉儲 objectStoreName ,調用 objectStore() 方法取得此交易所屬之物件倉儲,針對其進行資料維護作業, Transaction() 方法的定義如下:

IDBTransaction transaction (
any storeNames,
optional DOMString mode);

第一個參數為此方法取得的物件倉儲名稱,第二個參數是選擇性的,它表示允許的資料存取方式,包含readonly、readwrite與versionchange。

資料維護作業包含「新增」、「刪除」、「修改」以及「查詢」等等,也就是討論資料庫技術最重要的 CRUD 四項基本操作,如稍早說明的,相關作業並非直接透過IDBTransaction 物件實作,必須進一步取得所要操作的倉儲物件,調用其 objectStore() 方法可以達到這個目的,它的定義如下:

IDBObjectStore objectStore (in DOMString name)

由於資料儲存於特定的物件倉儲中,因此資料的維護操作是針對資料所在位置的倉儲進行的,調用此方法必須提供目標倉儲物件名稱 name ,將其當作參數傳入,如果指定的名稱 name 不存在,則會觸發一個 NotFoundError 例外。
objectStore() 一旦調用成功,將回傳一個 IDBObjectStore 物件,也就是稍早我們討論的物件倉儲,調用其定義的方法,包含 add() 或是 delete() 等等,即可進行資料的維護操作。

HTML5 Indexed Database API 入門系列

沒有留言: