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

我正在尝试在 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();

    }


}

http://img4.mukewang.com/64897a3c00016bd506500417.jpg

慕尼黑8549860
浏览 140回答 1
1回答

HUH函数

您的代码中的问题是您的类中时间戳字段的类型与数据库中的属性UserLight类型不匹配。timestamp看,在您的UserLight班级中,时间戳字段的类型是long,这基本上是一个数字,而在数据库中的类型是Dateor Timestamp。请注意,两者必须匹配。因为在 Cloud Firestore 中保存日期的正确方法是使用DateorTimestamp类,要解决这个问题,只需将模型类中的时间戳字段类型更改为Date。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java