当前位置: 首页 > 面试题库 >

在Firebase Firestore上ServerTimestamp始终为null

汤飞翮
2023-03-14
问题内容

我正在尝试使用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。


问题答案:

这不是将时间和日期添加到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>() {/* ... */}


 类似资料:
  • 我目前正在使用ASP开发一个网站。net MVC框架,我决定停止使用本地数据库,并在azure上发布我的web应用程序及其关联数据库。现在我有一个奇怪的身份验证问题。身份IsAuthenticated总是正确的。起初,我得到了以下错误: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier或http://schem

  • 下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!

  • 问题内容: 我正在编写一个C#ASP.Net MVC应用程序,供客户端将文件发布到其他服务器。我正在使用通用处理程序来处理从客户端到服务器的发布文件。但是在我的处理程序中,System.Web.HttpContext.Current.Request.Files始终为空(0个计数)。 表格代码: 处理程序: 请帮我。谢谢。 问题答案: 最后,我发现了问题。 由于某些原因,控制器中的代码永远无法正常工

  • 问题内容: 我使用firefox 3.6.10和firebug进行调试 所以,这是我的代码: responseXML 始终为null,我已经尝试了来自不同域的多个URL。我也异步地尝试过,结果是一样的。该 responseText的 总是正确返回,与它没有任何问题。 我的目标是获取 responseXML.documentElement 。 谢谢你的帮助。 编辑----------- 此javas

  • 问题内容: 我尝试在android客户端应用程序的webview中填写表格。我知道它应该如何工作,但是getElementById总是为我返回null。我在其他网站上尝试过。 这是我针对www.google.com的示例。 还有MyWebView类(仅供参考)。 我总是得到错误: 但是元素“ mib”应该在站点上。使用桌面浏览器(带有移动模拟功能的Chrome),一切正常。我不知道,这是怎么回事。

  • 问题内容: 我不知道我的代码正在发生什么。我没有错误,也没有回应。我正在将数据写入串行端口,并通过激活等待响应, 但未触发此事件,inputstream.available()始终返回0。可能是什么问题?我在Linux中使用RXTX。 编辑 我在主要方法上打开端口,并在应用程序内的按钮单击事件上发送消息。 问题答案: 不能用于进程间通信(包括串行),因为它仅检查当前进程中(输入缓冲区中)是否有可用