Ich verstehe, indexedDB hat nicht findOne oder finden Funktionen (wie MongoDB tut), aber was ich erreichen möchte, ist ähnlich wie diese Funktionen.findOne in indexedDB
Ich habe einen Datenspeicher in indexedDB. Ich habe einen Index für das Geschäft erstellt, zum Beispiel mit der stop_id
.
Ich möchte im Laden alle Dokumente mit der stop_id
finden. Mehrere Objekte können einen stop_id
Wert haben.
Was ich habe:
Ich versuche, ein bisschen zu betrügen (bitte korrigieren Sie mich, wenn es einen besseren Weg)
// this function is called from html via angularjs
$scope.findOne = function(stop_id) {
var db;
var request = indexedDB.open("Trans");
request.onerror = function(event) {
alert("Couldn't connect to Database");
};
request.onsuccess = function(event) {
db = event.target.result;
var objectStore = db.transaction("times").objectStore("times");
var index = objectStore.index("stop_id");
var range = IDBKeyRange.only(stop_id);
// call something here to retrieve
// One or All documents with the ID of stop_id
// passed in from the html
}
}
dann würde ich wollen, wie so in html nennen:
Ich denke über den obigen Ansatz nach, da indexedDB Joins nativ nicht unterstützt, und ich möchte native indexeddb Problemumgehungen verwenden um das Extrahieren von zusätzlichen Daten in Bezug auf eine ID in einem anderen Datenspeicher im laufenden Betrieb zu erreichen. Leistung ist kein Problem. Beide Datenspeicher-Dokumente werden nicht mehr als 150 Elemente enthalten.
Danke. Werde es versuchen. Und ja, ich habe kein eindeutiges erstellt: wahrer Index für sie – Rexford
Funktioniert nicht wie ich erwartet hatte. Ich bekomme eine Reihe von wiederholten undotinct Ergebnissen in der Konsole. Von Anfang an weiß ich nicht, ob eine Abfrage zu mehreren Objekten führt oder nicht, also ging ich mit der obigen Option fort. Ich mache wahrscheinlich etwas nicht richtig. Ich würde mich über mehr Klarheit freuen, um mir dabei zu helfen, diese ganze indexeddb-Sache zu bekommen. – Rexford
Der Abschnitt, der mehrere Datensätze oben iteriert, gibt nie dasselbe Objekt zweimal zurück, aber möglicherweise können Objekte zurückgegeben werden, die ähnlich aussehen. Es listet nur alle Objekte mit dem angegebenen stop_id-Parameter auf. Ich habe ein Beispiel gezeigt, wie die passenden Stopps in ein Array geschoben wurden. Vielleicht setzen Sie das Array nicht zwischen Anrufen oder ähnlichem zurück? – Josh