>  기사  >  웹 프론트엔드  >  Cloud Firestore에서 대소문자를 구분하지 않고 정렬하려면 어떻게 해야 합니까?

Cloud Firestore에서 대소문자를 구분하지 않고 정렬하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-22 08:52:02883검색

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

Cloud Firestore 쿼리를 사용한 대소문자 구분 없는 정렬

Cloud Firestore에서는 쿼리와 필터 모두 대소문자를 구분해야 하므로 개발자는 대소문자를 구분하지 않는 정렬을 위한 대체 접근 방식을 찾아야 합니다. . 이 문제를 해결하기 위해 널리 사용되는 기술은 데이터의 대소문자를 구분하지 않는 복사본을 유지하면서 중복 필드를 생성하는 것입니다.

대소문자를 구분하지 않는 필드 생성

원본 데이터, 정렬 및 필터링은 대소문자를 구분하지 않는 필드를 기반으로 수행될 수 있습니다. 예를 들어 myData라는 필드에는 모든 값이 소문자로 변환된 해당 myData_insensitive 필드가 있을 수 있습니다.

DocA:
-> myData = 'AAA'
-> myData_insensitive = 'aaa'

DocB:
-> myData = 'aaa'
-> myData_insensitive = 'aaa'

DocC:
-> myData = 'BBB'
-> myData_insensitive = 'bbb'

DocD:
-> myData = 'bbb'
-> myData_insensitive = 'bbb'

유니코드용 대소문자 접기

유니코드 지원에는 대소문자 접기가 권장됩니다. 복잡한 문자 정규화 및 대소문자를 구분하지 않는 정렬을 처리합니다. 다음 JavaScript 스니펫은 대소문자 구분 구현 방법에 대한 예를 제공합니다.

<code class="javascript">caseFoldNormalize = function (s){
  return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase()
};</code>

샘플 코드

이 코드 스니펫은 대소문자를 구분하지 않는 필드가 있는 Firestore 문서를 생성하는 방법을 보여줍니다.

<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>

이렇게 하면 대소문자 구분 및 대소문자 구분 필드가 모두 포함된 문서가 생성됩니다.

<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>

이 기술은 Firestore에서 대소문자를 구분하지 않는 정렬 솔루션을 제공하지만 추가 저장 공간이 필요하며 문서를 업데이트할 때마다 처리 비용이 발생합니다. 모든 솔루션과 마찬가지로 장단점을 고려하고 애플리케이션 요구 사항에 가장 적합한 접근 방식을 선택하십시오.

위 내용은 Cloud Firestore에서 대소문자를 구분하지 않고 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.