Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich in Cloud Firestore eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung erreichen?

Wie kann ich in Cloud Firestore eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung erreichen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-22 08:52:02878Durchsuche

How Can I Achieve Case-Insensitive Sorting in Cloud Firestore?

Cloud Firestore-Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung mit Abfrage

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.

Erstellen eines Felds, bei dem die Groß-/Kleinschreibung nicht berücksichtigt 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'

Groß-/Kleinschreibung für Unicode

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>

Beispielcode

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn