Cloud Firestore memerlukan kedua-dua pertanyaan dan penapis untuk peka huruf besar-besaran, menjadikan pembangun mencari pendekatan alternatif untuk pengisihan tidak sensitif huruf besar-besaran . Untuk menangani perkara ini, teknik yang popular melibatkan mencipta medan pendua sambil mengekalkan salinan data yang tidak sensitif huruf besar dan kecil.
Dengan mencipta medan sekunder dengan versi huruf kecil data asal, pengisihan dan penapisan boleh dilakukan berdasarkan medan tidak peka huruf besar-kecil ini. Sebagai contoh, medan yang dipanggil myData boleh mempunyai medan myData_insensitive yang sepadan dengan semua nilai ditukar kepada huruf kecil.
DocA: -> myData = 'AAA' -> myData_insensitive = 'aaa' DocB: -> myData = 'aaa' -> myData_insensitive = 'aaa' DocC: -> myData = 'BBB' -> myData_insensitive = 'bbb' DocD: -> myData = 'bbb' -> myData_insensitive = 'bbb'
Lipatan huruf besar disyorkan untuk sokongan Unikod, kerana ia mengendalikan normalisasi aksara yang kompleks dan pengisihan tidak peka huruf besar-kecil. Coretan JavaScript berikut memberikan contoh cara melaksanakan lipatan huruf besar-kecil:
<code class="javascript">caseFoldNormalize = function (s){ return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase() };</code>
Coretan kod ini menunjukkan cara membuat dokumen Firestore dengan medan tidak sensitif huruf besar-besaran:
<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>
Ini akan menghasilkan dokumen dengan kedua-dua medan sensitif huruf besar dan kecil:
<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>
Ingat, walaupun teknik ini menawarkan penyelesaian untuk pengisihan tidak sensitif huruf besar-besaran dalam Firestore, ia memerlukan ruang storan tambahan dan menanggung kos pemprosesan untuk setiap kemas kini dokumen. Seperti mana-mana penyelesaian, pertimbangkan pertukaran dan pilih pendekatan yang paling sesuai dengan keperluan aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengisihan Tidak Peka Huruf dalam Cloud Firestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!