Tri Firestore insensible à la casse avec la requête de Cloud Firestore
Dans Cloud Firestore, le tri des données est intrinsèquement sensible à la casse. L'utilisation de la méthode OrderBy trie les données par ordre croissant ou décroissant en fonction du champ spécifié. Toutefois, si les données contiennent des variations de casse, telles que « AAA » et « aaa », l'ordre renvoyé peut ne pas être celui souhaité.
Le problème du tri sensible à la casse
Par défaut, Firestore trie les données dans l'ordre suivant :
AAA BBB aaa bbb
Cependant, l'attente pourrait être :
AAA aaa BBB bbb
Solution : stockage des données insensibles à la casse
Étant donné que Firestore ne fournit pas d'indicateur intégré pour ignorer la casse lors du tri, la seule façon d'obtenir un tri insensible à la casse est de stocker un champ supplémentaire contenant une version des données insensible à la casse.
Considérons un champ appelé myData qui stocke les valeurs « AAA » et « aaa ». Pour rendre le tri insensible à la casse, vous devez stocker un deuxième champ appelé myData_insensitive avec la version des données insensible à la casse :
DocA: -> myData = 'AAA' -> myData_insensitive = 'AAA' DocB: -> myData = 'aaa' -> myData_insensitive = 'AAA' DocC: -> myData = 'BBB' -> myData_insensitive = 'BBB' DocD: -> myData = 'bbb' -> myData_insensitive = 'BBB'
Requête et classement par données insensibles à la casse
Vous pouvez désormais interroger et trier les données par myData_insensitive, ce qui fournira le résultat de tri souhaité, insensible à la casse.
Unicode et considérations locales
C'est important Il convient de noter que la normalisation de la casse pour Unicode est plus complexe que la simple conversion en minuscules ou en majuscules. Les langues peuvent avoir des règles de classement différentes, affectant la façon dont les caractères sont triés.
Utiliser le pliage de casse pour la normalisation de casse
Pour résoudre ces complexités, vous pouvez mettre en œuvre la normalisation de casse à l'aide du pliage de casse , qui garantit que les caractères avec des formes de casse différentes (par exemple, « a », « A ») sont traités comme équivalents. Les navigateurs modernes prennent en charge les fonctions natives pour cela.
Voici un exemple :
<code class="javascript">caseFoldNormalize = function (s) { return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase(); };</code>
Cet exemple convertit la chaîne s en version entièrement normalisée, en ignorant les différences de casse.
Par Grâce au tri et à la normalisation insensibles à la casse, vous pouvez trier efficacement les données dans Cloud Firestore sans tenir compte de la casse, garantissant ainsi la cohérence de l'ordre des données quelles que soient les variations de casse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!