Cloud Firestore: Mencapai Pengisihan Tidak Peka Huruf Menggunakan Pertanyaan
Dalam Cloud Firestore, mengisih data menggunakan fungsi OrderBy() adalah sensitif huruf besar-besaran , menghasilkan susunan rentetan berdasarkan kesnya, seperti yang ditunjukkan dalam contoh yang disediakan. Walau bagaimanapun, mungkin terdapat senario di mana pengisihan tidak peka huruf besar/kecil lebih diutamakan.
Penghadan Pengisihan Tidak sensitif huruf besar/kecil
Firestore tidak menyediakan penyelesaian langsung untuk pengisihan tidak sensitif huruf besar/kecil menggunakan pertanyaan. Ini kerana operasi pengisihan dan penapisan dijalankan secara dalaman oleh pangkalan data, yang beroperasi pada data sebenar yang disimpan.
Penyelesaian: Menyimpan Medan Pendua
Pendekatan yang disyorkan untuk mencapai pengisihan tidak sensitif huruf besar-besaran ialah menyimpan data dua kali:
Sebagai contoh, pertimbangkan medan bernama "myData" dengan nilai "AAA" dan "aaa". Untuk mencapai pengisihan tidak peka huruf besar-kecil, buat medan tambahan "myData_insensitive" dan simpan nilai sebagai "AAA" untuk kedua-duanya.
Menyoal dan Memaparkan Data
Apabila melakukan pertanyaan dan mengisih, nyatakan medan "myData_insensitive". Ini memastikan bahawa pesanan akan berdasarkan versi data yang tidak sensitif huruf besar-besaran. Walau bagaimanapun, apabila memaparkan keputusan, rujuk medan "myData" asal untuk mengekalkan ketepatan data.
Pertimbangan Unikod
Penormalan kes adalah penting apabila melaksanakan pengisihan tidak sensitif huruf besar-besaran untuk mengendalikan aksara Unicode dengan betul. Ini melibatkan penukaran aksara kepada format biasa, memastikan pengisihan konsisten untuk rentetan yang mengandungi aksen dan aksara khas. Pendekatan yang berbeza boleh digunakan untuk penormalan, seperti lipatan huruf besar kecil.
Contoh Pelaksanaan
Kod JavaScript berikut menunjukkan cara untuk mencapai pengisihan tidak sensitif huruf besar-besaran menggunakan medan pendua:
<code class="javascript">firestore.collection("cities").where("myData_insensitive", ">=", "AAA").where("myData_insensitive", "<=", "aaa").orderBy("myData_insensitive")</code>
Pertanyaan ini akan mengembalikan "AAA" dan "aaa" dalam susunan tidak sensitif huruf besar-kecil.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengisihan Case-Insensitive dalam Cloud Firestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!