Cloud Firestore erfordert, dass sowohl Abfragen als auch Filter die Groß-/Kleinschreibung berücksichtigen, sodass Entwickler nach alternativen Ansätzen für die Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung suchen müssen . Um dieses Problem zu lösen, besteht eine beliebte Technik darin, doppelte Felder zu erstellen und gleichzeitig Kopien der Daten beizubehalten, bei denen die Groß-/Kleinschreibung nicht beachtet wird.
Durch die Erstellung eines sekundären Felds mit einer Version in Kleinbuchstaben Basierend auf diesem Feld, bei dem die Groß-/Kleinschreibung nicht beachtet wird, können Originaldaten sortiert und gefiltert werden. Beispielsweise könnte ein Feld namens „myData“ ein entsprechendes „myData_insensitive“-Feld haben, in dem alle Werte in Kleinbuchstaben umgewandelt werden.
DocA: -> myData = 'AAA' -> myData_insensitive = 'aaa' DocB: -> myData = 'aaa' -> myData_insensitive = 'aaa' DocC: -> myData = 'BBB' -> myData_insensitive = 'bbb' DocD: -> myData = 'bbb' -> myData_insensitive = 'bbb'
Für die Unicode-Unterstützung wird die Groß-/Kleinschreibung empfohlen Es übernimmt die komplexe Zeichennormalisierung und die Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung. Das folgende JavaScript-Snippet bietet ein Beispiel für die Implementierung der Groß-/Kleinschreibung:
<code class="javascript">caseFoldNormalize = function (s){ return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase() };</code>
Dieses Code-Snippet zeigt, wie ein Firestore-Dokument mit Feldern erstellt wird, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird:
<code class="javascript">var raw_document = { name: "Los Angeles", state: "CA", country: "USA", structure: 'Waſſerſchloß', message: 'quıt quit' // Notice the different i's }; var field_options = { name: 'case_fold', country: 'case_fold', structure: 'case_fold', message: 'case_fold' } var firestore_document = caseFoldDoc(raw_document, field_options); db.collection("cities").doc("LA").set(firestore_document).then(function() { console.log("Document successfully written!"); }).catch(function(error) { console.error("Error writing document: ", error); });</code>
Dies führt zu einem Dokument mit Feldern, bei denen sowohl die Groß-/Kleinschreibung als auch die Groß-/Kleinschreibung nicht berücksichtigt werden:
<code class="javascript">{ "name": "Los Angeles", "state": "CA", "country": "USA", "structure": "Waſſerſchloß", "message": "quıt quit", "name_casefold": "los angeles", "country_casefold": "usa", "structure_casefold": "wasserschloss", "message_casefold": "quit quit" }</code>
Denken Sie daran, dass diese Technik zwar eine Lösung für die Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung in Firestore bietet erfordert zusätzlichen Speicherplatz und verursacht Verarbeitungskosten für jede Dokumentenaktualisierung. Berücksichtigen Sie wie bei jeder Lösung die Kompromisse und wählen Sie den Ansatz, der am besten zu Ihren Anwendungsanforderungen passt.
Das obige ist der detaillierte Inhalt vonWie kann ich in Cloud Firestore eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!