微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Firebase Firestore上ServerTimestamp始终为null

如何解决在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] 举报,一经查实,本站将立刻删除。