#javascript #firebase #react-native #google-cloud-firestore
#javascript #firebase #react-native #google-облако-firestore
Вопрос:
Я использую Firestore в качестве своей базы данных. Я хочу отфильтровать свои данные с помощью одной переменной, а затем упорядочить их в хронологическом порядке, используя вторую переменную.
Мой код, чтобы попытаться достичь этого, следующий:
firebase.firestore().collection('supervisorRequests')
.where("supervisor", "==", this.props.currentUID)
.orderBy("postDate", "desc")
Для приведенного выше кода я получаю следующий вывод:
Firestore: Операция была отклонена, поскольку система не находится в состоянии, необходимом для выполнения операции.(firestore / сбой -предварительное условие)
Если я удалю либо .orderBy
либо .where
из запроса, проблема исчезнет.
В чем причина проблемы? Почему я не могу использовать оба «фильтра»? Как я могу получить данные так, как я их запрашивал, и избежать необходимости сортировать их вручную с моей стороны?
Ответ №1:
Иногда у меня возникает ошибка такого рода в вашей ситуации: выполнение orderby в поле и выполнение where в другом поле.
Попытка решения, которое работает для меня (с использованием Android Studio), заключается в создании индекса. Чтобы узнать относительную ссылку на этот конкретный индекс в терминале, я использую эту команду :
adb logcat
Это покажет вам журнал. Вы можете отменить эту команду с помощью «crtl c», а затем прокрутить немного вверх, где вы увидите точную ссылку для использования. Вы копируете эту ссылку и вставляете ее в браузер. Но сначала вы должны пройти аутентификацию в своей консоли firebase. И затем появится модальное сообщение с запросом, хотите ли вы создать этот индекс: вы принимаете.
Или, если вы хотите, вы можете вручную создать этот индекс непосредственно в консоли firebase. Управление индексами в облачном Firestore