2014-04-01 16 views
2

在索引的唯一ID分貝我有如下記錄得到IndexedDB的指數

Key    Value 
emp_1    { emp_fName : "Mike", 
        emp_lName : "Davis", 
        dept_id : 1 
        } 

emp_2    { emp_fName : "Merry", 
        emp_lName : "Bond", 
        dept_id : 1 
        } 

我已經創建的dept_id上,我希望獲取獨特的dept_id指數,我該怎麼辦呢?

+0

你好用戶780611!感謝您提出IDB標記的問題。我看到你還沒有接受任何問題的答案,但你有足夠的業力。 http://meta.stackoverflow.com/help/someone-answers如果您的需求在下面得到滿足,我一定會欣賞「正確的」答案。 – buley

回答

2

您需要通過在IDBIndex對象上使用openCursor()openKeyCursor()在索引上創建cursor。從the spec一個例子:

var tx = db.transaction("books", "readonly"); 
var store = tx.objectStore("books"); 
var index = store.index("by_author"); 

var request = index.openCursor(IDBKeyRange.only("Fred")); 
request.onsuccess = function() { 
    var cursor = request.result; 
    if (cursor) { 
    // Called for each matching record. 
    report(cursor.value.isbn, cursor.value.title, cursor.value.author); 
    cursor.continue(); 
    } else { 
    // No more matching records. 
    report(null); 
    } 
}; 

一個特定的標誌你要設置爲您IDBCursorDirectionnextunique(相對於默認,next),這「不應該產生的記錄使用相同的密鑰,否則產生的所有以單調遞增的順序記錄密鑰。「

+0

這意味着我們必須對結果集進行處理。從索引數據庫我們不能直接獲得唯一的ID。真的嗎? –

+1

使用所謂的「主鍵」(總是存在)或附加索引,直接獲得密鑰確實是可能的。我們稱之爲「確切鍵遊標」,它仍然是一個遊標,因爲您可能在同一個鍵下有多個條目。看看'getKey()'和'get()'方法。 [這是我的圖書館處理所有情況的例子。](https://github.com/buley/dash/blob/dee65c53619b7163612a4402566e1c6522e6a310/lib/dash.dev.js#L1252) – buley