获取缓存的文档快照localWriteTime

时间:2019-09-24 14:10:02

标签: android kotlin

我正在尝试对一些离线数据进行分页。

一开始我要订购10条记录

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

然后,当用户向下滚动时,我会获得最新索引的时间,并在此之后开始

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

“时间”字段的值来自

FieldValue.serverTimestamp()

我允许我的用户在脱机时发布内容,这引起了麻烦,如果latestDocument仍具有待处理的写入,则“时间”值将为null。 如果lastDocument时间等于null,我尝试在lastDocument之前获取消息,但是如果我一开始加载的10个文档中的所有文档都有待处理的写操作(它们的时间为null),我环顾了documentSnapshot,发现它有一个localWriteTime变量,可以将其用作查询的起点。

如何获取DocumentSnapShot的localWriteTime?

here is an Image

1 个答案:

答案 0 :(得分:0)

因此我找到了解决问题的方法,您可以使用以下方式获得文档的估计写入时间

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

我应该提到,这个时间是估计的,快照上传到服务器时,该值将改变