Firestore使用Rest API更新文档字段

问题描述 投票:3回答:2

我试图使用REST API在云firestore中执行BATCH操作。

这是我的申请机构

`{
  "fields": {
    "name": {
      "stringValue":"Dinesh"
    }
  }
}`

当我触发请求时,文档中的所有现有字段都将被删除,只有名称字段才会更新。在文档中,他们给出了文档掩码Document Mask。但我不明白它是如何工作的,也无法找到任何样品。有人知道如何只更新文档中的一个字段而不影响其他字段?

firebase google-cloud-firestore
2个回答
5
投票

如果没有DocumentMask对象,补丁方法默认使用请求正文替换Firestore文档,而不是更新提交的字段并保留省略的字段。

DocumentMask作为updateMask参数提交,其中包含要修补的fieldPaths。花了一段时间,但thanks to this answer和很多尝试我发现updateMask对象的每个fieldPath属性需要单独包含在请求URL的查询字符串中:

https://firestore.googleapis.com/v1beta1/projects/{projectId}/databases/{databaseId}/documents/{document_path}?updateMask.fieldPaths=status&updateMask.fieldPaths=title

其中statustitle是请求正文中的两个字段。请注意,如果从查询字符串中省略了请求正文中包含的字段,则这些字段将保持不变。


2
投票

你的请求正文是好的。但是您需要使用更新掩码。

通过阅读文档,我发现DocumentMask用于将文档的获取或更新操作限制为其字段的子集。因此,通过在掩码上的字段路径中添加“名称”,它只允许您更新该特定字段,而其他字段不会被删除。

你可以阅读更多关于它here

© www.soinside.com 2019 - 2024. All rights reserved.