IndexedDB从上到下选择对象?

时间:2015-02-15 14:48:17

标签: javascript database html5 select indexeddb

例如:

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?

现在我得到类似的东西:猫,唐娜,比尔,甘道夫。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

openCursor方法接受两个参数。第二个参数是可选的,指定光标的方向。因为它是可选的,所以很少看到示例代码中指定的第二个参数,所以也许这就是它混淆的原因。

有四种可能的方向值:next,prev,nextUnique和prevUnique。您将参数指定为字符串。 next是隐含的默认参数。

因此,使用openCursor(boundKeyRange, 'prev')反向迭代。