如何对从 IndexedDb 中的一个游标获得的结果进行排序

How to sort a result obtained from one cursor in IndexDb

假设我在 indexdb 中有一个 table,它有两列 - name 和 salary,并且我在这两列上都有单独的索引。

现在我已经使用索引名称上的游标和范围获得了这样的结果 -

var value ="ujjwal";
var trans = db.transaction(['employee'], "readonly");
var store = trans.objectStore('employee');
var index = store.index('name');

var cursorRequest = index.openCursor(IDBKeyRange.only(value)),
res = new Array();

cursorRequest.onsuccess = function(e) {

    var cursor = e.target.result;
    if (cursor) {
        res.push(cursor.value);
        cursor.continue();
    }
};

所以现在我得到了多个结果。我怎样才能按薪水对他们进行排序。

我想使用 IndexedD.I 已经在工资列上建立索引。

查看有关 Array.prototype.sort

的一些文档

然后根据您的评论编辑如下内容:

function myOnUpgradeNeeded(event) {
  var db = event.target.result;
  var store = db.createObjectStore('employee');
  store.createIndex('name-salary-index', ['salary', 'name']);
}

function findByNameOrderBySalary(db, name, callback) {
  var tx = db.transaction('employee');
  var store = tx.objectStore('employee');
  var index = store.index('name-salary-index');

  var lowerBound = [Number.NEGATIVE_INFINITY, name];
  var upperBound = [Number.POSITIVE_INFINITY, name];
  var range = IDBKeyRange.bound(lowerBound, upperBound);
  var request = index.getAll(range);
  request.onsuccess = function(event) {
    var employeeArray = event.target.result;
    callback(employeeArray);
  };
  request.onerror = function(event) {
    console.log('Error occurred', event.target.error);
    callback([]);
  };
}