Firestore REST API:如何用PATCH操作仅更新单个文档字段
如何用Firestore REST API仅更新单个字段(不删除其他字段)
我完全懂你碰到的这个坑——Firestore的REST API默认情况下,PATCH请求会直接替换整个文档,这就是为什么你发送请求后,原来的其他字段都没了,只剩更新的name字段。Document Mask就是专门用来解决这个问题的工具,它能精准指定要更新的字段,让其他字段保持原样。
什么是Document Mask?
简单来说,它是一个查询参数,告诉Firestore:“我只想要更新这些字段,其他的别碰”。没有它的话,Firestore会把你提交的fields当作整个文档的新内容,直接覆盖掉原文档。
具体用法步骤
- 添加查询参数:在请求URL末尾加上
updateMask.fieldPaths参数,值就是你要更新的字段名(比如name)。如果是嵌套字段(比如user.profile.email),直接填完整路径即可。 - 保持请求体不变:你原来的请求体
{ "fields": { "name": { "stringValue":"Dinesh" } } }不需要修改,只需要配合上面的参数使用。
完整请求示例(curl)
curl -X PATCH \ 'https://firestore.googleapis.com/v1/projects/你的项目ID/databases/(default)/documents/你的集合名/你的文档ID?updateMask.fieldPaths=name' \ -H 'Authorization: Bearer 你的访问令牌' \ -H 'Content-Type: application/json' \ -d '{ "fields": { "name": { "stringValue":"Dinesh" } } }'
更新多个字段的情况
如果需要同时更新多个字段,只需要添加多个updateMask.fieldPaths参数即可,比如:
curl -X PATCH \ 'https://firestore.googleapis.com/v1/projects/你的项目ID/databases/(default)/documents/你的集合名/你的文档ID?updateMask.fieldPaths=name&updateMask.fieldPaths=age' \ -H 'Authorization: Bearer 你的访问令牌' \ -H 'Content-Type: application/json' \ -d '{ "fields": { "name": { "stringValue":"Dinesh" }, "age": { "integerValue":30 } } }'
这样操作之后,Firestore就只会更新你指定的字段,文档里的其他现有字段都会保留下来啦。
内容的提问来源于stack exchange,提问作者Dinesh Thiyagarajan
相关产品推荐
相关产品推荐

