FESTtore REST API добавить метку времени - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь добавить данные в Cloud Firestore через REST API (https://developers.google.com/apis-explorer/#search/firestore/firestore/v1beta1/firestore.projects.databases.documents.createDocument)

. Я могу создать новый документ, например, с целочисленным значением, поэтому соединение и синтаксис в порядке.

На следующем шаге я хочу добавить в документ отметку времени на стороне сервера , потому что я делаю POST-запрос от ESP32, а время недоступно. Тело запросавыглядит так:

{  
   "fields":{  
      "myTime":{  
         "timestampValue":"SERVER_TIME_STAMP"
      }
   }
}

Что мне нужно написать для SERVER_TIME_STAMP? Для других языков существует константа, подобная firebase.database.ServerValue.TIMESTAMP , которую сервер заменит наего текущее время. Но API не принимает такие значения, как они.

Сообщение об ошибке:

"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.",

1 Ответ

0 голосов
/ 06 февраля 2019

Для 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

...