Как получить документы по убыванию DocumentID? - PullRequest
0 голосов
/ 31 августа 2018

Я столкнулся с проблемой , возникшей в этом вопросе . Поскольку в другом вопросе (и ответе) отсутствует смысл решения проблемы, я пишу новый вопрос.

orderBy(FieldPath.documentId(), 'desc')

Приведенный выше запрос не будет выполнен со следующим сообщением об ошибке:

Для запроса требуется индекс. Вы можете создать его здесь: ...

Как описано в другом вопросе, невозможно создать этот индекс из-за следующего сообщения об ошибке:

__name__ только индексы не поддерживаются

Поскольку противоположный запрос работает нормально :

orderBy(FieldPath.documentId(), 'asc')

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

Было бы замечательно, если бы было решение вышеупомянутой проблемы, то есть, если есть способ создать индекс, который заставит 'desc' работать. Однако я ожидаю, что это просто невозможно, и поэтому сформулирую более широкую проблему.

Как мне получить мои документы в порядке убывания по идентификатору документа?

Я мог бы, очевидно, выполнить запрос 'asc' и затем перевернуть полученный список.
Но это не работает , потому что мне нужно limit() запрос. Я не могу просто оплатить все документы в коллекции, просто чтобы получить по убыванию .
Таким образом, мне будет выставлен счет за всех документов, прочитанных в коллекции , даже если я просто хотел получить один (последний) . Вот отличная статья, в которой обсуждаются возможные последствия этого , потому что не масштабируется .

Действительно ли мне нужно создать поле с именем id, которое содержит точно такое же documentID, просто чтобы создать индекс для него и затем иметь возможность запрашивать по убыванию?
Потенциальная коллекция может выглядеть так:

"q":
 - id: "q"
"u":
 - id: "u"
"i":
 - id: "i"
"t":
 - id: "t"
"e":
 - id: "e"
"d":
 - id: "d"
"u":
 - id: "u"
"m":
 - id: "m"
"b":
 - id: "b"

1 Ответ

0 голосов
/ 31 августа 2018

В настоящее время невозможно выполнить нисходящий запрос на основе идентификатора документа. Ваш альтернативный вариант - поместить идентификатор документа в поле документа и использовать его для заказа.

Не стесняйтесь также подать запрос функции для этого, но вряд ли это произойдет в ближайшем будущем.

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