我正在寻找有关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
],
}
没有示例这样的HTTP请求应该是什么样子。
如果我构建请求看起来像这样
PATCH https://firestore.googleapis.com/v1beta1/projects/{projectId}/databases/{databaseId}/documents/messages/someid?updateMask={"fieldPaths":["message"]}
请求正文包含所需的文档
此请求将在400上失败,名称为“updateMask”的参数无法绑定...
如何使用PHP(Guzzle HTTP客户端)创建这样的请求?
每个修补字段都需要作为单个参数包含在查询字符串中。 您可以将此格式用于您的网址:
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>
字段掩码中省略的字段不会更改,无论它们是否包含在请求正文Document中。
您可以使用Google REST API资源管理器从我们的用户友好界面生成带有查询参数和正文的预定义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>
字段掩码中省略的字段不会更改,无论它们是否包含在请求正文Document中。