Firestore REST API: Query parameters type of object

不想你离开。 提交于 2019-12-08 19:32:19

问题


I am looking for an advice regarding Google Firestore REST API

I am trying to update the document but keep the data that are not updated (https://cloud.google.com/firestore/docs/reference/rest/v1beta1/projects.databases.documents/patch)

I have a document in "message" collection, the document contains following fields: "timestamp", "message" and "user".

If I do the PATCH request to update the "message" field, then the "timestamp" and "user" fields are removed.

There is "Query Parameter" "updateMask" to preven this. The parameter is type of object (DocumentMask). The DocumentMask object looks like this in documentation:

{
  "fieldPaths": [
    string
  ],
}

There is no example how such a HTTP request should look like.

If I build to request to look like this

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

The request body contains desired Document

This request will fail on 400, that the parameter with name "updateMask" is unabled to bind...

How can I create such a request with PHP (Guzzle HTTP client)?


回答1:


Each patched field needs to be included as an individual parameter in the query string.
You can use this format for your 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>

Fields omitted from the field mask are unchanged, regardless if they are included in the request body Document.

You can use the Google REST API explorer to generate pre-defined URL with Query Parameters and Body from us user friendly interface:

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




回答2:


Each patched field needs to be included as an individual parameter in the query string:

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>

Fields omitted from the field mask are unchanged, regardless if they are included in the request body Document.



来源:https://stackoverflow.com/questions/48937981/firestore-rest-api-query-parameters-type-of-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!