# #javascript #firebase #google-cloud-firestore
Вопрос:
Я пытаюсь создать фильтр для своего приложения, он будет фильтроваться по категории данных, но я также хочу отсортировать их по рейтингу, более высокий рейтинг будет на вершине. Я написал следующий код, но у функции orderby() возникли проблемы.
const snapshot = await firebase.firestore().collection('Locations').where( "category", "==", type).orderBy("rating").get(); if (snapshot.empty){ console.log('No matching documents'); return; } snapshot.forEach(doc=gt; { locList.push(doc.data()); })
Комментарии:
1. Какую реакцию вы получаете?
Ответ №1:
Чтобы отсортировать значения от наибольшего рейтинга к наименьшему, укажите порядок по убыванию. Измените orderBy
функцию на:
.orderBy('rating', 'desc')
Комментарии:
1. я получаю ошибку
[Unhandled promise rejection: FirebaseError: The query requires an index. You can create it here:...
2. Вам нужно создать индекс на консоли firebase. Перейдите по ссылке, отображаемой (после…), и вы должны быть хороши.
3. Я создаю индексы вручную, но должны ли эти два данных быть «По возрастанию», «По убыванию» или «Массив»? Также должны ли области запроса быть «Коллекция» или «Группа коллекций»?
4. Идентификатор коллекции : Местоположения . Поля : — категория — Рейтинг по возрастанию — Рейтинг по убыванию. Область запроса : «Коллекция».
5. @AdamNeuwirth Привет, Адам, что, если мне нужно сделать от наименьшего к наибольшему? изменить desc на asce?