我正在尝试使用 Firebase Firestore 在 Android 客户端中添加时间戳字段。
根据文档:
用于标记要使用服务器填充的日期字段的注释
时间戳。如果正在写入的 POJO 包含 null
@ServerTimestamp注释的字段,它将被替换为
服务器生成的时间戳。
但是当我尝试时:
@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
.
这不是将时间和日期添加到 Cloud Firestore 数据库的正确方法。最佳实践是拥有一个模型类,您可以在其中添加日期类型的字段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>() {/* ... */}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)