Почему включение оператора orderBy не возвращает все записи? - PullRequest
0 голосов
/ 05 июня 2019

При запросе в Firestore, если я включу заказ, он будет ограничен 10 записями. Удаление заказаBy вернет все 100 записей.

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

Следующее вернет 10 строк:

db.collection('transactions').where('uid', '==', 'myuserid').orderBy('transaction.date', 'desc').orderBy('id', 'asc').limit(100).get()

Без orderBy ожидаемые 100 строк возвращаются. Но, конечно, результаты неупорядочены:

db.collection('transactions').where('uid', '==', 'myuserid').limit(100).get()

РЕДАКТИРОВАТЬ: Также обнаружил, что выполнение 1 orderBy, кажется, тоже работает нормально:

db.collection('transactions').where('uid', '==', 'myuserid').orderBy('transaction.date', 'desc').limit(100).get()

Я предполагаю, что это как-то связано с индексом и данными, которые не соседствуют друг с другом. Но без какой-либо видимости в индексах нет никакого способа узнать. 10 результатов (последовательно) очень странные.

Ответы [ 2 ]

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

Спасибо всем за комментарии, они привели меня к решению - оказалось, что было 10 документов с ключом 'id', и поэтому появились только те. Я ошибочно подумал, что, упорядочив по «id», он упорядочит по id документа.

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

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

См .: Порядок / предел Google Firestore

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