【问题标题】:Firestore FieldValue.ServerTimestamp always null while using model class in android?Firestore FieldValue.ServerTimestamp 在android中使用模型类时总是为空?
【发布时间】:2018-07-16 09:26:24
【问题描述】:

他可能会被问很多次,但没有一个解决方案对我不起作用,现在让我告诉你我到目前为止尝试过什么,我只使用简单的模型类将值保存在 Cloud Firestore db 和该模型类中使用时间戳字段但插入时间戳时始终为空不知道在哪里出错现在让我发布我的代码:

 import com.google.firebase.firestore.ServerTimestamp;

    import java.util.Date;

      public class DriverMasterModel {

    private String test;
    @ServerTimestamp
    private Date date;

    public DriverMasterModel() {}

    public DriverMasterModel(String test) { this.test = test; }

    public String getTest() { return test; }
    @PropertyName("Created_At")
    public Date getDate() { return date; }
}

这里将数据插入到数据库中:

DriverMasterModel driverMasterModel=new DriverMasterModel();
                driverMasterModel.setTest("test");
                FirebaseFirestore dbb=FirebaseFirestore.getInstance();
                dbb.collection("Test").add(driverMasterModel).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                    @Override
                    public void onSuccess(DocumentReference documentReference) {

                    }
                });

但我的 Created_at 字段在 Firestore 数据库中始终为空。

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    你总是得到null,因为你的模型类是错误的。您的 MasterModel 类应如下所示:

    public class MasterModel {
        private String test;
        @ServerTimestamp
        private Date date;
    
        public MasterModel() {}
    
        public MasterModel(String test) { this.test = test; }
    
        public String getTest() { return test; }
    
        public Date getDate() { return date; }
    }
    

    你看,类的名字和构造函数的名字一样,而Date对象的名字是简单的date而不是Created_At

    编辑:根据您的评论,请查看您的模型类的新配置:

    public class MasterModel {
        private String test;
        @ServerTimestamp
        private Date createdAt, updatedAt;
    
        public MasterModel() {}
    
        public MasterModel(String test) { this.test = test; }
    
        public String getTest() { return test; }
    
        public Date getCreatedAt() { return createdAt; }
    
        public Date getUpdatedAt() { return updatedAt; }
    }
    

    【讨论】:

    • 抱歉,兄弟我只使用了同名的构造函数,我在发布代码时错过了这一点,我的另一个问题是我的时间戳的字段名称是 Created_At 那么我该如何将名称更改为日期
    • 我需要该字段名作为 Created_At 如何以该名称保存它
    • 尝试使用我发布的确切模型类。但请记住,删除您现在在数据库中的记录并添加新数据。是这样的吗?
    • 仍然没有运气兄弟:(
    • 应该可以,我已经亲自测试过了。你有错误还是什么?
    猜你喜欢
    • 2018-04-12
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2022-08-17
    • 2021-03-19
    • 1970-01-01
    相关资源
    最近更新 更多