2017-06-29 3 views
0

Angenommen, ich habe eine Tabelle in indexdb, die zwei Spalten hat - Name und Gehalt und ich habe separate Index auf beiden.Wie sortiere ich ein Ergebnis von einem Cursor in IndexDb

Jetzt habe ich Ergebnis mit Cursor und Bereich auf Indexnamen wie folgt erhalten -

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(); 
    } 
}; 

so jetzt habe ich mehrere Ergebnisse bekam. Wie kann ich sie nach Gehalt sortieren?

Ich möchte dies mit IndexedD tun. Ich habe bereits Index auf Gehaltsspalte.

+0

Dies kann hilfreich sein https://stackoverflow.com/questions/12084177/in- indexeddb-is-da-ein-weg-zu-machen-eine-sortierte-compound-query –

Antwort

0

Schauen Sie sich einige Dokumentation auf Array.prototype.sort

bearbeiten, basierend auf Ihren Kommentar, so etwas wie dieses dann:

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

Danke josh, aber ich wollte es in indexedDb Weise tun. Kann ich etwas mit indexedDb machen? –