Cloud Firestore Нечувствительная к регистру сортировка с помощью запроса

Я попытался прочитать отсортированные данные из Cloud Firestore с помощью OrderBy . И Firestore вернул данные в следующем порядке:

AAA
BBB
aaa
bbb

Теперь я хочу что-то вроде следующего:

AAA
aaa
BBB
bbb

Я хочу, чтобы этот результат использовался только с помощью OrderBy, а не с помощью ручной сортировки.
Есть ли способ отсортировать это в Firestore?


Пожалуйста, предоставьте мне решение для этого.

Заранее спасибо.

javascript,firebase,google-cloud-firestore,

9

Ответов: 2


12 принят

Сортировка в Cloud 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, но показыватьmyData


0

Вы также можете сделать это вручную после получения результатов:

docArray.sort((a, b) => {
  if (a.myData.toLowerCase() < b.myData.toLowerCase()) {
    return -1;
  }
  if (a.myData.toLowerCase() > b.myData.toLowerCase()) {
    return 1;
  }
  return 0;
});
JavaScript, firebase, Google-облако-Firestore,
Похожие вопросы