2017-06-29 6 views
0

indexdbに名前と給与の2つのカラムがあり、両方にインデックスがあるとします。IndexDbの1つのカーソルから得られた結果をソートする方法

今私はこのようなインデックス名の上にカーソルと範囲を使用して結果を取得している -

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を使用してこれを行いたいです。私は既に給与計算列にインデックスを持っています。

+0

をhttps://stackoverflow.com/questions/12084177/in- indexeddb-there-a-way-to-make-a-sorted-compound-query –

答えて

0

その後、あなたのコメントに基づいて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([]); 
    }; 
} 
+0

ありがとう、ジョシュですが、私はindexedDbの方法でそれをやりたかったのです。 indexedDbでできることはありますか? –

関連する問題