我在我的 android 项目中使用 firestore,一切正常。但是昨天从文档快照获取时间戳值时出现了问题。
if (documentChange.getType() == DocumentChange.Type.ADDED) {
Map<String, Object> stringObjectMap = documentChange.getDocument().getData();
Date date = (Date) stringObjectMap.get("timestamp"); }
这是我的收藏文件之一。
id : "25",
message : "This is my message",
timestamp : December 11, 2017 at 10:39:12 PM UTC+5, \\This is Firebase FieldValue.serverTimestamp()
username : "Temp"
我从文档中获取了除时间戳之外的所有内容。
如果你看到这个ADDED
从同一客户端写入后具有空时间戳的事件,这是预期的行为。
当您使用服务器时间戳写入时,您将收到两个事件:
- 确认文档写入本地缓存的初始事件。
此时时间戳为
null
因为服务器还没有设置
还没完成。
- 第二个事件,其中时间戳已由服务器设置,并且
客户已观察到变化。
我们正在开发一个 API 来使这种行为可配置,但现在您需要处理这种情况。
Edit您现在可以控制此行为。
DocumentSnapshot snap = ...
// One of ESTIMATE, NONE, or PREVIOUS
DocumentSnapshot.ServerTimestampBehavior behavior = ...
Date date = snap.getDate("fieldName", behavior);
之前的行为(返回null
当未知时)相当于NONE
在新的 API 中。有关详细信息,请参阅 JavaDoc:https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.ServerTimestampBehavior
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)