我正在尝试对一些离线数据进行分页。
一开始我要订购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?
答案 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
我应该提到,这个时间是估计的,快照上传到服务器时,该值将改变