Cloud Firestore 쿼리를 사용한 Firestore 대소문자 구분 없는 정렬
Cloud Firestore에서 데이터 정렬은 기본적으로 대소문자를 구분합니다. OrderBy 메서드를 활용하면 지정된 필드를 기준으로 데이터를 오름차순 또는 내림차순으로 정렬합니다. 그러나 데이터에 'AAA' 및 'aaa'와 같이 대소문자 변형이 포함된 경우 반환된 순서가 원하는 것과 다를 수 있습니다.
대소문자 구분 정렬 문제
기본적으로 Firestore는 다음 순서로 데이터를 정렬합니다.
AAA BBB aaa bbb
그러나 다음과 같이 예상할 수 있습니다.
AAA aaa BBB bbb
해결책: 대소문자를 구분하지 않는 데이터 저장
Firestore는 정렬 중에 대소문자를 무시하는 기본 제공 플래그를 제공하지 않으므로 대소문자를 구분하지 않는 정렬을 수행하는 유일한 방법은 대소문자를 구분하지 않는 버전의 데이터가 포함된 추가 필드를 저장하는 것입니다.
'AAA' 및 'aaa' 값을 저장하는 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'
대소문자를 구분하지 않는 데이터 쿼리 및 정렬
이제 원하는 대소문자 구분 정렬 결과를 제공하는 myData_insensitive로 데이터를 쿼리하고 정렬할 수 있습니다.
유니코드 및 로컬 고려 사항
중요 유니코드의 대소문자 정규화는 단순히 소문자나 대문자로 변환하는 것보다 더 복잡합니다. 언어마다 서로 다른 대조 규칙이 있어 문자 정렬 방식에 영향을 미칠 수 있습니다.
대소문자 정규화를 위한 대소문자 구분 사용
이러한 복잡성을 해결하려면 대소문자 구분을 사용하여 대소문자 정규화를 구현할 수 있습니다. , 이는 서로 다른 대소문자 형태(예: 'a', 'A')를 가진 문자가 동일한 것으로 처리되도록 보장합니다. 최신 브라우저는 이를 위한 기본 기능을 지원합니다.
예는 다음과 같습니다.
<code class="javascript">caseFoldNormalize = function (s) { return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase(); };</code>
이 예는 문자열 s를 대소문자 차이를 무시하고 완전히 정규화된 버전으로 변환합니다.
By 대소문자를 구분하지 않는 정렬 및 정규화를 활용하면 Cloud Firestore의 데이터를 대소문자를 구분하지 않고 효과적으로 정렬하여 대소문자 변화에 관계없이 데이터 순서의 일관성을 보장할 수 있습니다.
위 내용은 Cloud Firestore의 쿼리로 대소문자를 구분하지 않는 정렬을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!