在Android中使用模型类时,Firestore FieldValue.ServerTimestamp始终为null?

时间:2018-07-16 09:26:25

标签: java android firebase google-cloud-firestore

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

 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; }
}

这里是将数据插入db:

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数据库中始终为空。

1 个答案:

答案 0 :(得分: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; }
}