Cloud Firestore Case Insensitive Sorting Using Query

Ho provato a leggere i dati ordinati da Cloud Firestore usando OrderBy . E Firestore ha restituito i dati come segue:

AAA
BBB
aaa
bbb

Ora, quello che voglio è qualcosa come seguire:

AAA
aaa
BBB
bbb

Voglio questo risultato usando solo OrderBy non con l’ordinamento manuale.
C’è un modo per ordinare come questo in Firestore?

Per favore forniscimi una soluzione per questo.

Grazie in anticipo.

L’ordinamento in Cloud Firestore fa distinzione tra maiuscole e minuscole. Non c’è nessuna bandiera per rendere l’ordinamento ignorare il caso.

L’unico modo per ottenere il tuo caso d’uso è di memorizzare il campo due volte.

Diciamo che il tuo campo che memorizza “AAA” e “aaa” si chiama myData . Nel codice client è necessario memorizzare un secondo campo chiamato myData_insensitive cui si memorizza una copia dei dati convertiti in caratteri minuscoli.

 DocA: -> myData = 'AAA' -> myData_insensitive = 'AAA' DocB: -> myData = 'aaa' -> myData_insensitive = 'AAA' DocC: -> myData = 'BBB' -> myData_insensitive = 'BBB' DocD: -> myData = 'bbb' -> myData_insensitive = 'BBB' 

Ora puoi ordinare da myData_insensitive , ma mostrare myData

Puoi anche farlo manualmente dopo aver ottenuto i risultati:

 docArray.sort((a, b) => { if (a.myData.toLowerCase() < b.myData.toLowerCase()) { return -1; } if (a.myData.toLowerCase() > b.myData.toLowerCase()) { return 1; } return 0; });