如何使用REST在Firestore文档中插入服务器时间戳? [英] How to insert server timestamp in Firestore document using REST?
问题描述
我想使用对 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": "???"
}
}
}
我尝试使用null
,0
,空字符串,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
请求,以同时发出update
和transform
请求.如果您只想使用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屋!