Firebase - невозможно сортировать и фильтровать данные одновременно - PullRequest
1 голос
/ 05 апреля 2019

Я использую Firestore в качестве базы данных.Я хочу отфильтровать свои данные, используя одну переменную, а затем упорядочить их в хронологическом порядке, используя вторую переменную.

Мой код, чтобы попытаться достичь этого, следующий:

firebase.firestore().collection('supervisorRequests')
  .where("supervisor", "==", this.props.currentUID)
  .orderBy("postDate", "desc")

Для кода выше я получаю следующий вывод:

Firestore: Operationбыло отклонено, потому что система не находится в состоянии, необходимом для выполнения операции. (firestore / fail-precondition)

Если я удаляю либо .orderBy, либо .where из запроса, проблема исчезает,

В чем причина проблемы?Почему я не могу использовать оба "фильтра"?Как я могу получить данные так, как я их запрашивал, и избежать необходимости сортировать их вручную на моем конце?

1 Ответ

0 голосов
/ 06 апреля 2019

Иногда у меня возникает такая ошибка в вашей ситуации: orderby в поле и где в другом поле.

Попытка решения, которое работает для меня (с помощью Android Studio), заключается в создании индекса.Чтобы узнать относительную ссылку на этот конкретный индекс, в терминале я использую эту команду:

adb logcat

Он покажет журнал.Вы можете отменить эту команду с помощью "crtl + c", а затем прокрутить немного вверх, где вы увидите точную ссылку для использования.Вы копируете эту ссылку и вставляете ее в браузер.Но вы должны сначала пройти аутентификацию в консоли Firebase.И тогда появится модальное устройство, которое спросит вас, хотите ли вы создать этот индекс: вы принимаете.

Или, если хотите, вы можете вручную создать этот индекс непосредственно в консоли Firebase. Управление индексами в Cloud Firestore

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