Mi chiedevo se è possibile eseguire una ricerca su un archivio oggetti indexeddb utilizzando i caratteri jolly. Sarebbe utile trovare tutti gli oggetti con un tasto che inizia con '555' ad esempioIndexeddb: ricerca utilizzando caratteri jolly
risposta
Questo è possibile utilizzando i tasti composti oi frammenti di chiave. Il modo in cui le chiavi funzionano in IndexedDB è che si genera un oggetto "keyRange" e lo si passa all'invocazione del cursore. Il keyrange passa informazioni come "inizia da A e termina a Z, incluso".
In base alla natura, è presente una corrispondenza parziale; il rovescio della medaglia è che il tuo cursore restituirà tutti i tasti che si trovano tra le tue chiavi e potresti dover filtrare ulteriormente quei risultati.
Diciamo che avete queste parole come chiavi in un negozio oggetto:
- Aardvark
- di Apple
- Microsoft
La gamma chiave "dalla A alla Z, inclusiva "restituirebbe tutti questi, ma" Dalla A alla Z, inclusi "restituirebbe solo gli ultimi tre.
Un'altra tecnica che ho usato per implementare questo è passando una funzione "filtro" ai miei metodi che richiamano IndexedDB. All'interno dei metodi su callback di successo, passare il risultato (event.target.result
) tramite la funzione filtro e se restituisce true, quindi richiamare il callback del metodo invocatore del metodo.
Non è possibile per impostazione predefinita, ma la mia libreria che ho scritto per indexeddb lo supporta. Prova linq2indexeddb.
molto bello. Appena avrò tempo darò un'occhiata! –
Search è possibile anche con caratteri jolly in IndexedDB vedi link IndexedDB Fuzzy Search
per jolly di seguito dovrebbe funzionare: gamma var = IDBKeyRange.bound ("555", "555" + '\ uffff');
Oppure utilizzare la libreria Linq2indexeddb per utilizzare come.
Sì, è possibile utilizzare i caratteri jolly, una sorta di.
Non posso ancora votare o commentare le risposte precedenti (hmmm ...) quindi ripeterò la risposta dell'utente2025527 in quanto ha funzionato perfettamente per le mie esigenze.
Utilizzare il metodo dei limiti e specificare il valore di base per il primo argomento e lo stesso valore più un carattere aggiuntivo per il secondo argomento.
Nella maggior parte dei casi il carattere carattere aggiuntivo dovrebbe essere l'ultimo nel vostro charset: \ uffff
Ma tu sei libero di decidere ciò che costituisce il limite, soprattutto quando si tratta di localizzazione.
Affinché non dire di avere i seguenti valori nel vostro indice:
- Un
- AB
- B
- BA
- BB
- C
Per trovare tutto ciò che afferma w con "BA" dovresti usare
var range = IDBKeyRange.bound("BA", "BA" + '\uffff');
"quindi ripeterò la risposta di user2025527" Per favore non limitatevi a ripetere le risposte; se hai intenzione di farlo, almeno aggiungi qualcosa su di esso. –
SO come può cercare tutti i valori che contengono la lettera "B" –
In SQL viene eseguito con 'chiave LIKE '555%'' e dovrebbe funzionare. – kirilloid
possibile duplicato di [IndexedDB Fuzzy Search] (http://stackoverflow.com/questions/7086180/indexeddb-fuzzy-search) – Josh