如何解决在Firebase Firestore上ServerTimestamp始终为null
这不是将时间和日期添加到CloudFirestore数据库的正确方法。最佳实践是拥有一个模型类,您可以在其中添加类型的日期字段以及Date注释。这是您的模型类的外观:
import java.util.Date;
public class YourModelClass {
@ServerTimestamp
private Date date;
YourModelClass() {}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
在YourModelClass类的对象上创建时,无需设置日期。Firebase服务器将读取您的date字段,因为它是一个字段ServerTimestamp(请参见注释),并且它将使用服务器时间戳相应地填充该字段。
另一种方法是使用FieldValue.serverTimestamp()
方法,如下所示:
Map<String, Object> map = new HashMap<>();
map.put("date", FieldValue.serverTimestamp());
docRef.update(map).addOnCompleteListener(new OnCompleteListener<Void>() {/* ... */}
解决方法
我正在尝试使用Firebase Firestore在Android客户端中添加时间戳字段。
根据文档:
用于标记要用服务器时间戳填充的日期字段的注释。如果正在写入的POJO包含@ServerTimestamp注释的字段为null,它将被服务器生成的时间戳替换。
但是当我尝试时:
@ServerTimestamp
Date serverTime = null; // I tried both java.util.Date and java.sql.Date
//...
Map<String,Object> msg = new HashMap<>();
// ... more data
msg.put("timestamp",serverTime);
在Cloud Firestore数据库上,此字段始终为null。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。