Упорядочить по документу с идентификатором пожарного депо? - PullRequest
0 голосов
/ 25 апреля 2018

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

Но возможно ли сохранить документы с отметкой времени в качестве идентификатора, и тогда она будет сортироваться по умолчанию?Или, может быть, жестко закодировать идентификатор, а затем извлечь последний созданный идентификатор документа и увеличить идентификатор на единицу для загрузки следующего сообщения?

Это показывает, как документы упорядочены в коллекции.

This shows how the documents is ordered in the collection

Любые идеи о том, как хранить документы, чтобы они были упорядочены созданными вв коллекции?

Ответы [ 4 ]

0 голосов
/ 17 июня 2019

Это плохо документировано, но вы можете сделать .order(by: '__name__').

Firebase вроде говорит об этом здесь:

https://github.com/FirebaseExtended/polymerfire/issues/306

0 голосов
/ 25 апреля 2018

Если я правильно понял вашу потребность, выполнив следующее, вы должны получить правильный порядок:

Для каждого документа добавьте определенное поле типа номер, называемое, например, sortNbr и присвойте в качестве значения aметка времени, которую вы вычисляете (например, время эпохи, см. Получить время эпохи Unix в Swift )

Затем создайте запрос, отсортированный по значению этого поля, например:

let docRef = db.collection("xxxx")
docRef.order(by: "sortNbr")

Смотрите документ здесь: https://firebase.google.com/docs/firestore/query-data/order-limit-data

0 голосов
/ 18 октября 2018

Да, вы можете сделать это.

По умолчанию запрос извлекает все документы, которые удовлетворяют запросу, в порядке возрастания по идентификатору документа.

См. Документыздесь: https://firebase.google.com/docs/firestore/query-data/order-limit-data

Так что, если вы найдете способ использовать метку времени или другое значение первичного ключа, где вам нужен восходящий лексикографический порядок, вы можете фильтровать по любым полям и по-прежнему сортировать результаты попервичный ключ, по возрастанию.

Будьте осторожны, чтобы набрать нулевые числа с максимальной точностью, используя цифровую клавишу, например, секунды с начала эпохи или целочисленную последовательность.10 лексикографически меньше 2, но 10 больше 02.

Использование отформатированных в ISO YYYY-mm-ddTHH:MM:SS строк даты и времени будет работать, потому что они сортируются естественным образом в порядке возрастания.

0 голосов
/ 25 апреля 2018

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

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

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