是的,最好你對性的指標,您可以打開指數的光標。但是你不需要遍歷整個商店 - 只需要你正在尋找的價值。
給出模式是這樣的:
store = db.createObjectStore('records');
store.createIndex('by_field1', 'field1'); // implicitly unique:false
你可以這樣做:
function findValues(passed, callback) {
var tx = db.transaction('records');
var store = tx.objectStore('records');
var index = store.index('by_field1');
// accumulate matching records here
var results = [];
// asynchronously loop over the passed values
function nextValue() {
if (!passed.length) {
// all done!
callback(results);
return;
}
// open a cursor matching just the current value we're looking for
var value = results.shift();
var request = index.openCursor(IDBKeyRange.only(value));
request.onsuccess = function() {
var cursor = request.result;
if (!cursor) {
nextValue();
} else {
results.push(cursor.value);
cursor.continue();
}
};
}
nextValue();
}
這可以通過打開一個光標爲每個傳遞的值和迭代他們都更有效率並行地累積單獨的結果集,然後在所有遊標完成時將它們結合起來。
http://stackoverflow.com/questions/25299547 – Josh