我正在尝试通过REST API(https://developers.google.com/apis-explorer/#search/firestore/firestore/v1beta1/firestore.projects.databases.documents.createDocument)将数据添加到Cloud Firestore
我能够使用例如一个整数值,因此连接和语法似乎没问题。
在下一步中,我要将服务器端时间戳添加到文档中。因为我从ESP32发出POST请求,所以时间不可用。 Request-Body看起来像:
{
"fields":{
"myTime":{
"timestampValue":"SERVER_TIME_STAMP"
}
}
}
我必须为SERVER_TIME_STAMP写什么?对于其他语言,似乎有一个常量,例如 firebase.database.ServerValue.TIMESTAMP ,服务器将用其当前时间替换该常量。但是API不接受像thees这样的值。
错误消息是
"code": 400,
"message": "Invalid value at 'document.fields[0].value.timestamp_value' (type.googleapis.com/google.protobuf.Timestamp), Field 'timestampValue', Illegal timestamp format; timestamps must end with 'Z' or have a valid timezone offset.",
答案 0 :(得分:0)
对于REST API,您应该使用DocumentTransform
-> FieldTransform
-> setToServerValue
->将ServerValue
设置为REQUEST_TIME
。
似乎DocumentTransform
只能在write
和commit
API上使用,而不能在createDocument
或patch
上使用。您可以使用commit
API替代patch
。
https://firebase.google.com/docs/firestore/reference/rest/v1beta1/Write#ServerValue