Firestore REST API:查询参数的对象类型

Ond*_*hák 6 php firebase guzzle google-cloud-firestore

我正在寻找有关Google Firestore REST API的建议

我正在尝试更新文档但保留未更新的数据(https://cloud.google.com/firestore/docs/reference/rest/v1beta1/projects.databases.documents/patch)

我在"消息"集合中有一个文档,该文档包含以下字段:"timestamp","message"和"user".

如果我执行PATCH请求以更新"消息"字段,则删除"时间戳"和"用户"字段.

有"查询参数""updateMask"来防止这种情况.参数是对象的类型(DocumentMask).DocumentMask对象在文档中如下所示:

{
  "fieldPaths": [
    string
  ],
}
Run Code Online (Sandbox Code Playgroud)

没有示例这样的HTTP请求应该是什么样子.

如果我构建请求看起来像这样

PATCH https://firestore.googleapis.com/v1beta1/projects/{projectId}/databases/{databaseId}/documents/messages/someid?updateMask={"fieldPaths":["message"]}
Run Code Online (Sandbox Code Playgroud)

请求正文包含所需的文档

此请求将在400上失败,名称为"updateMask"的参数无法绑定...

如何使用PHP(Guzzle HTTP客户端)创建这样的请求?

Der*_*rek 6

每个修补字段都需要作为单个参数包含在查询字符串中.
您可以将此格式用于您的网址:

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>
Run Code Online (Sandbox Code Playgroud)

字段掩码中省略的字段不会更改,无论它们是否包含在请求正文Document中.

您可以使用Google REST API资源管理器从我们的用户友好界面生成带有查询参数和正文的预定义网址:

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