FESTtore REST API: параметры запроса типа объекта

Я ищу совет относительно API REST Google Firestore

Я пытаюсь обновить документ, но сохраняю данные, которые не были обновлены
(https://cloud.google.com/firestore/docs/reference/rest/v1beta1/projects.databases.documents/patch)

У меня есть документ в коллекции «message», документ содержит следующие поля: «timestamp», «message» и «user».

Если я выполню запрос PATCH для обновления поля «message», то поля «timestamp» и «user» будут удалены.

Существует «Параметр запроса» «updateMask», чтобы предотвратить это. Параметр является типом объекта (DocumentMask). Объект DocumentMask выглядит следующим образом в документации:

{
"fieldPaths": [
string
],
}

Нет примера, как должен выглядеть такой HTTP-запрос.

Если я собираюсь запросить, чтобы выглядеть так

PATCH https://firestore.googleapis.com/v1beta1/projects/{projectId}/databases/{databaseId}/documents/messages/someid?updateMask={"fieldPaths":["message"]}

Тело запроса содержит нужный документ

Этот запрос не будет выполнен на 400, что параметр с именем «updateMask» не может связать …

Как я могу создать такой запрос с помощью PHP (клиент Guzzle HTTP)?

6

Решение

Каждое исправленное поле должно быть включено как отдельный параметр в строку запроса.
Вы можете использовать этот формат для вашего URL:

https://firestore.googleapis.com/v1beta1/projects/<YOUR PROJECT>/databases/(default)/documents/messages/someid?updateMask.fieldPaths=message&updateMask.fieldPaths=<another_field_to_update>&updateMask.fieldPaths=<and_so_on>

Поля, пропущенные из маски поля, не изменяются, независимо от того, включены ли они в документ тела запроса.

Вы можете использовать Google REST API Explorer для создания предопределенного URL с параметрами запроса и текстом из нашего удобного интерфейса:

https://developers.google.com/apis-explorer/

5

Другие решения

Каждое исправленное поле должно быть включено как отдельный параметр в строку запроса:

https://firestore.googleapis.com/v1beta1/projects/<YOUR PROJECT>/databases/(default)/documents/messages/someid?updateMask.fieldPaths=message&updateMask.fieldPaths=<another_field_to_update>&updateMask.fieldPaths=<and_so_on>

Поля, пропущенные из маски поля, не изменяются, независимо от того, включены ли они в документ тела запроса.

2

По вопросам рекламы [email protected]