》HTML5 Indexed Database API 入門系列
IDBObjectStore 物件所定義的 createIndex() 方法支援索引物件的建立,其定義如下:
參數 name 為所要建立的新索引名稱,第二個參數 keyPath 則是索引的資料欄位鍵值路徑,最後的參數 optionalParameters 是 IDBIndexParameters 型態的 dictionary 物件,其定義如下:
布林值 unique預設值為 false ,如果 unique 被設定為 true ,強迫索引中沒有任何記錄有相同的鍵值,因為如此的限制,導致新增或是修正任何記錄時,要避免新的記錄產生與目前記錄相同的鍵值,否則會導致資料的儲存失敗。
建立索引必須在調整資料庫版本的交易事件中進行,因此調用 createIndex() 可能觸發 InvalidStateError 例外,這個例外也會在來源物件被刪除時發生,而另外還有一個 ConstraintError 例外,發生於嘗試建立相同名稱的索引物件。
以下的程式碼建立索引。
其中建立一個新的物件倉儲,接下來以此調用 createIndex(),建立一個新的索引物件。
我們很有可能在現有的物件倉儲中,建立新的索引物件,甚至刪除已經存在的特定索引物件,而這必須透過版本升級交易物件所取得的物件倉儲中,進行處理,刪除索引物件的方法如下:
參數 indexName 為所要刪除的索引物件名稱,這個方法執行完畢之後, indexName 名稱的索引物件即從物件倉儲中被刪除。考慮以下兩段程式碼:
// name 要刪除的索引名稱
函式createIDX() 取得交易物件,並且透過此物件取得欲建立索引之物件倉儲,調用createIndex() 方法完成新增作業。函式 deleteIDX() 則透過交易物件取得物件倉儲,最後調用 deleteIndex() 方法進行索引刪除作業。
》HTML5 Indexed Database API 入門系列
IDBObjectStore 物件所定義的 createIndex() 方法支援索引物件的建立,其定義如下:
IDBIndex createIndex (
DOMString name,
any keyPath,
optional IDBIndexParameters optionalParameters);
參數 name 為所要建立的新索引名稱,第二個參數 keyPath 則是索引的資料欄位鍵值路徑,最後的參數 optionalParameters 是 IDBIndexParameters 型態的 dictionary 物件,其定義如下:
dictionary IDBIndexParameters {
boolean unique = false;
boolean multiEntry = false;
};
布林值 unique預設值為 false ,如果 unique 被設定為 true ,強迫索引中沒有任何記錄有相同的鍵值,因為如此的限制,導致新增或是修正任何記錄時,要避免新的記錄產生與目前記錄相同的鍵值,否則會導致資料的儲存失敗。
建立索引必須在調整資料庫版本的交易事件中進行,因此調用 createIndex() 可能觸發 InvalidStateError 例外,這個例外也會在來源物件被刪除時發生,而另外還有一個 ConstraintError 例外,發生於嘗試建立相同名稱的索引物件。
以下的程式碼建立索引。
function addIDX() {
version++;
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
db = event.target.result;
var objectStore = db.createObjectStore(objectStoreNamerin);
// name 要建立的索引名稱
// keyPath 要建立的索引鍵值路徑
objectStore.createIndex(name, keyPath);
}
}
其中建立一個新的物件倉儲,接下來以此調用 createIndex(),建立一個新的索引物件。
我們很有可能在現有的物件倉儲中,建立新的索引物件,甚至刪除已經存在的特定索引物件,而這必須透過版本升級交易物件所取得的物件倉儲中,進行處理,刪除索引物件的方法如下:
void deleteIndex(DOMString indexName);
參數 indexName 為所要刪除的索引物件名稱,這個方法執行完畢之後, indexName 名稱的索引物件即從物件倉儲中被刪除。考慮以下兩段程式碼:
function createIDX() {
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
db = event.target.result;
var transaction = event.target.transaction;
var store = transaction.objectStore(objectStoreName);
// name 要建立的索引名稱
// keyPath 要建立的索引鍵值路徑
store.createIndex(name, keyPath);
}
}
function deleteIDX() {
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
db = event.target.result;
var transaction = event.target.transaction;
var store = transaction.objectStore(objectStoreName);
store.deleteIndex(name);
}
}
函式createIDX() 取得交易物件,並且透過此物件取得欲建立索引之物件倉儲,調用createIndex() 方法完成新增作業。函式 deleteIDX() 則透過交易物件取得物件倉儲,最後調用 deleteIndex() 方法進行索引刪除作業。
》HTML5 Indexed Database API 入門系列
沒有留言:
張貼留言