为了账号安全,请及时绑定邮箱和手机立即绑定

在 Firestore 中获取服务器时间戳时出错

在 Firestore 中获取服务器时间戳时出错

慕尼黑8549860 2023-06-14 16:28:16
我正在尝试在 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,这基本上是一个数字,而在数据库中的类型是Dateor Timestamp。请注意,两者必须匹配。

因为在 Cloud Firestore 中保存日期的正确方法是使用DateorTimestamp类,要解决这个问题,只需将模型类中的时间戳字段类型更改为Date

查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信