在我的项目中,我使用浏览器的索引数据库,我想从数据库中检索具有特定ID的某些对象。根据MDN,您可以使用范围来获取所需的结果:
根据MDN:
// Only match "Donna"
var singleKeyRange = IDBKeyRange.only("Donna");
// Match anything past "Bill", including "Bill"
var lowerBoundKeyRange = IDBKeyRange.lowerBound("Bill");
// Match anything past "Bill", but don't include "Bill"
var lowerBoundOpenKeyRange = IDBKeyRange.lowerBound("Bill", true);
// Match anything up to, but not including, "Donna"
var upperBoundOpenKeyRange = IDBKeyRange.upperBound("Donna", true);
// Match anything between "Bill" and "Donna", but not including "Donna"
var boundKeyRange = IDBKeyRange.bound("Bill", "Donna", false, true);
// To use one of the key ranges, pass it in as the first argument of openCursor()/openKeyCursor()
index.openCursor(boundKeyRange).onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
// Do something with the matches.
cursor.continue();
}
};
但是,如果您希望通过单个请求获取不按顺序且不连续的特定ID数组(例如:[91,819,34,24,501]),该怎么办?
通过使用光标一键获取多个对象是可能的。
键需要排序。
var keys = [91,819,34,24,501].sort(function(a, b) {
return a - b;
});
var results = [];
var i = 0;
var cursorReq = store.openCursor();
cursorReq.onsuccess = function(e) {
var c = e.target.result;
if(!c) { return; /* done */ }
while(c.key > keys[i]) {
i++;
if(i === keys.length) { return; /* done */ }
}
if(c.key === keys[i]) { // found
results.push(cursor.value);
c.continue();
} else { c.continue(keys[i]); }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句