如何使用REST在Firestore文档中插入服务器时间戳? [英] How to insert server timestamp in Firestore document using REST?

查看:60
本文介绍了如何使用REST在Firestore文档中插入服务器时间戳?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用对 Firestore createDocument 方法.字段之一是应在服务器上设置的时间戳字段.使用Android SDK,就像用@ServerTimestamp注释Date字段并将其保持为空一样简单-现在如何在REST中做到这一点?

I want to insert a document using a REST call to Firestore createDocument method. One of the fields is a timestamp field that should be set on the server. With Android SDK it's as simple as annotating a Date field with @ServerTimestamp and keeping it null — now how do I do it in REST?

{
  "fields": {
    "timezoneId": {
      "stringValue": "Europe\/London"
    },
    "city": {
      "stringValue": "London"
    },
    "timestamp": {
      "timestampValue": "???"
    }
  }
}

我尝试使用null0,空字符串,timestamp-一切都会失败,并出现需要标准RFC3339格式(例如2018-01-31T13:50:30.325631Z)的错误.我可以使用任何占位符值,或以任何方式获取该时间戳记吗?

I tried using null, 0, empty string, timestamp — everything fails with an error requiring the standard RFC3339 format (e.g. 2018-01-31T13:50:30.325631Z). Is there any placeholder value I can use, or any way to obtain that timestamp?

推荐答案

创建文档时,Android SDK不会执行createDocument请求.而是使用 write 请求,以同时发出updatetransform请求.如果您只想使用createDocument,那么答案是否定的.

The Android SDK doesn't execute a createDocument request when creating the document. Instead it uses the write request to issue an update and a transform request at the same time. If you are wanting to only use createDocument, then the answer is no.

您的有效载荷看起来像这样:

Your payload would look something like this:

{
  "writes": [
    {
      "update": {
        "name": "projects/{projectId}/databases/{databaseId}/documents/{document_path}",
        "fields": {
          "timezoneId": {
            "stringValue": "Europe\/London"
          },
          "city": {
            "stringValue": "London"
          }
        }
      },
      // ensure the document doesn't exist
      "currentDocument": {
        "exists": false
      }
    },
    {
      "transform": {
        "document": "projects/{projectId}/databases/{databaseId}/documents/{document_path}",
        "fieldTransforms": [
          {
            "fieldPath": "timestamp",
            "setToServerValue": "REQUEST_TIME"
          }
        ]
      }
    }
  ]
}

以这种方式添加文档的唯一缺点是,您需要自己生成Document ID(SDK会生成它们).我希望这会有所帮助.

The only downside to adding documents this way is you would need to generate the Document ID yourself (the SDK's generate them). I hope this helps.

这篇关于如何使用REST在Firestore文档中插入服务器时间戳?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆