我正在尝试在 Cloud Firestore 中添加文档,但我需要用于timestamp添加文档的服务器。文档已成功添加到集合中,并带有正确的timestamp. 我正在添加带有警告对话框的文档。但是当我返回到我的活动应用程序时,它会因以下错误而终止:java.lang.RuntimeException: java.lang.reflect.InvocationTargetException ....... E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Date com.google.firebase 原因: .Timestamp.toDate()' 在 com.sasam.virtuallibrary.Models.UserLight.setTimestamp(UserLight.java:103) 的空对象引用上为了显示文档,我正在使用以下查询Query query= FirebaseFirestore.getInstance() .collection("Users") .document(user.getUid()) .collection("friends") .orderBy("timestamp", Query.Direction.DESCENDING);我的课在这里public class UserLight{ protected String name; protected String email; protected String uid; protected Float rating; protected String photoUrl; protected long timestamp; public UserLight(){ } //other getters and setters @Exclude public long getTimestampLong(){ return timestamp; } public FieldValue getTimestamp() { return FieldValue.serverTimestamp(); } public void setTimestamp(Timestamp timestamp) { this.timestamp = timestamp.toDate().getTime(); }}
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
您的代码中的问题是您的类中时间戳字段的类型与数据库中的属性UserLight
类型不匹配。timestamp
看,在您的UserLight
班级中,时间戳字段的类型是long
,这基本上是一个数字,而在数据库中的类型是Date
or Timestamp
。请注意,两者必须匹配。
因为在 Cloud Firestore 中保存日期的正确方法是使用Date
orTimestamp
类,要解决这个问题,只需将模型类中的时间戳字段类型更改为Date。
添加回答
举报
0/150
提交
取消