IndexedDB select 个对象从上到下?
IndexedBD select objects from upper to lower?
例如:
const customerData = [
{ id: 444, name: "Bill", age: 35, email: "bill@company.com" },
{ id: 5555, name: "Donna", age: 32, email: "donna@home.org" },
{ id: 666, name: "Cat", age: 2, email: "cat@home.org" },
{ id: 888, name: "Gandalf", age: 21000, email: "gandalf@home.org" }
];
function getDataByRange(db, table, index, lower, upper, fun){
var data = [];
var tx = db.transaction(table, "readonly");
var store = tx.objectStore(table);
var index = store.index(index);
var boundKeyRange = IDBKeyRange.bound(lower, upper, false, false);
var request = index.openCursor(boundKeyRange);
request.onsuccess = function() {
var cursor = request.result;
if (cursor) {
data.push(cursor.value);
cursor.continue();
} else {
fun(data);
}
};
}
如何获得下一个结果:Gandalf、Bill、Donna、Cat?
现在我得到类似这样的信息:Cat、Donna、Bill、Gandalf。
感谢任何建议!
openCursor 方法接受两个参数。第二个参数是可选的,它指定光标的方向。因为它是可选的,所以您很少会在示例代码中看到指定的第二个参数,所以这可能就是它令人困惑的原因。
有四种可能的方向值:next、prev、nextUnique 和 prevUnique。您将参数指定为字符串。接下来是隐含的默认参数。
所以,用openCursor(boundKeyRange, 'prev')
反向迭代。
例如:
const customerData = [
{ id: 444, name: "Bill", age: 35, email: "bill@company.com" },
{ id: 5555, name: "Donna", age: 32, email: "donna@home.org" },
{ id: 666, name: "Cat", age: 2, email: "cat@home.org" },
{ id: 888, name: "Gandalf", age: 21000, email: "gandalf@home.org" }
];
function getDataByRange(db, table, index, lower, upper, fun){
var data = [];
var tx = db.transaction(table, "readonly");
var store = tx.objectStore(table);
var index = store.index(index);
var boundKeyRange = IDBKeyRange.bound(lower, upper, false, false);
var request = index.openCursor(boundKeyRange);
request.onsuccess = function() {
var cursor = request.result;
if (cursor) {
data.push(cursor.value);
cursor.continue();
} else {
fun(data);
}
};
}
如何获得下一个结果:Gandalf、Bill、Donna、Cat?
现在我得到类似这样的信息:Cat、Donna、Bill、Gandalf。
感谢任何建议!
openCursor 方法接受两个参数。第二个参数是可选的,它指定光标的方向。因为它是可选的,所以您很少会在示例代码中看到指定的第二个参数,所以这可能就是它令人困惑的原因。
有四种可能的方向值:next、prev、nextUnique 和 prevUnique。您将参数指定为字符串。接下来是隐含的默认参数。
所以,用openCursor(boundKeyRange, 'prev')
反向迭代。