Как искать документы из коллекции на основе поля в базе данных Firestore? - PullRequest
0 голосов
/ 06 мая 2019

Я работаю над приложением React Native и извлекаю профили из коллекции Firebase.И я хочу добавить функцию поиска, где, когда я ввожу даже первые 1 или 2 (или более) алфавита имени пользователя и нажимаю кнопку поиска.Я должен быть в состоянии получить имена пользователей, начиная с этих 1 или 2 алфавитов.

Я проверял запросы Cloud Firestore, но не смог найти ни одного по моей проблеме.

ОБНОВЛЕННЫЙ ВОПРОС:

enter image description here

В приведенном выше коде я добавляю приведенный ниже код в ответ Рено Тарнека.

 let queries = hashes.map(hash => rangeQueryParams(hash))
            .map(range => profiles.where('hash', '>=', range.start).where('hash', '<', range.end)
            .orderBy('displayName') // displayName is the name of Field here
            .startAt(searchString)
            .endAt(searchString + '\uf8ff')
            .get());

Но, похоже, это не работает.Я предполагаю, что это потому, что фильтр диапазона и orderBy находятся на разных полях здесь.

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Вы должны использовать комбинацию orderBy(), startAt() и endAt(), см. Документацию здесь: https://firebase.google.com/docs/firestore/query-data/order-limit-data?authuser=0

 var searchString = 'Sh'   //Example of value
 firebase
      .firestore()
      .collection('yourCollectioName')
      .orderBy('username')
      .startAt(searchString)
      .endAt(searchString + '\uf8ff')
      .get()
  .then(...)

Символ \uf8ff, используемый в запросе, идет после большинства обычных символов в Юникоде, поэтому запрос соответствует всем значениям, которые начинаются с searchString.

0 голосов
/ 06 мая 2019

Подход для полнотекстового поиска, рекомендуемый Firebase, заключается в использовании Algolia https://firebase.google.com/docs/firestore/solutions/search

Использование запросов Firestore с началом в конце и с упорядоченной коллекцией, безусловно, будет работать.Если вам нужен полнотекстовый поиск в вашем приложении в другом месте, где требуется допуск на орфографию и т. Д., Например, стоит подумать о переходе на Algolia вместо использования составных запросов firestore

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...