Получить кэшированные документыnapshot localWriteTime - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь выполнить разбиение на страницы для некоторых автономных данных.

в начале, я упорядочиваю 10 записей к моменту времени

myRef.orderBy("time", Query.Direction.DESCENDING).limit(10)

, затем, когда пользователь прокручивает страницу вниз, я получаювремя последнего индекса и начать после него, как это

myRef.orderBy("time",Query.Direction.DESCENDING).limit(10).startAfter(latestDocumentTime).get()

поле «Время» получает значение от

FieldValue.serverTimestamp()

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

Как я могу получить localWriteTime для DocumentSnapShot?

вот изображение

1 Ответ

0 голосов
/ 24 сентября 2019

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

val  myTime  = snapshot.get("time", DocumentSnapshot.ServerTimestampBehavior.ESTIMATE) as Timestamp

«время» - это имя поля в документе, в котором есть FieldValue.serverTimestamp() значение

это даст вам метку времени, вы можете получить секунду и наносекунду с

 val myTime = snapshot.get("time", DocumentSnapshot.ServerTimestampBehavior.ESTIMATE) as 
 val second = myTime.seconds
 val nano = myTime.nanoseconds

. Я должен отметить, что это время является оценочным, и значение изменится, когда снимокзагружено на сервер

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