如何对从 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([]);
};
}
假设我在 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([]);
};
}