firebase - Firestore 补丁映射值 REST API
问题描述
我正在尝试使用 POSTMAN 发送一个发布请求来更新一个地图条目的值,但我无法找到正确的语法。这就是我在我的数据库中发布数据的方式:
{
"fields" : {
"8" : {
"mapValue" : {
"fields" : {
"f1" : { "stringValue" : "A" },
"end" : { "integerValue" : "9" },
}
}
},
"9" : {
"mapValue" : {
"fields" : {
"f1" : { "stringValue" : "A" },
"end" : { "integerValue" : "10" },
}
}
},
}
}
如何将键 8 的值 f1 修改为 "B" ?
解决方案
要更新某些值,您需要使用PATCH。Firestore Map Values 是对象,可通过查询参数中的更新掩码访问,您还需要为要更新的资源定义JSON 请求正文。
因此,对于端点,它看起来像这样:
https://firestore.googleapis.com/v1/projects/{project_id}/databases/{database_id}/documents/{document_path}?updateMask.fieldPaths=KEYVALUE.VALUE
如您所见,您需要使用点表示法,因为地图值是对象。
请求正文:
{
"fields": {
"A8": {
"mapValue": {
"fields": {
"f1": {
"stringValue": "B"
}
}
}
}
}
}
需要注意的一件事是,您的密钥只是数字。Firestore 不喜欢这样,所以将它们更改为字母数字键(如“A8”而不是“8”)。一旦您更改它们,就可以访问您的值,例如A8.f1
。
如果要更新多个键,请将它们添加到带有 & 号的查询参数中,如下所示:
?updateMask.fieldPaths=A8.f1&updateMask.fieldPaths=A9.f1
并添加额外的 JSON 以便在同一个请求中进行更改;
{
"fields": {
"A8": {
"mapValue": {
"fields": {
"f1": {
"stringValue": "B"
}
}
}
},
"A9": {
"mapValue": {
"fields": {
"f1": {
"stringValue": "C"
}
}
}
}
}
}
PS:记得使用你的 Bearer Token 来发出请求。
以下是一些地图值参考链接:
https://firebase.google.com/docs/firestore/manage-data/data-types https://cloud.google.com/firestore/docs/reference/rest/v1/Value
推荐阅读
- javascript - 如何使用 BeautifulSoup 和 Requests 抓取动态变量 Javascript 值
- google-bigquery - 数据流导出到 Bigquery:insertAll 错误,无效的表引用
- sql - oracle sql语句帮助查询多个表
- inno-setup - Inno setup 为图像文件创建文件夹
- html - 使用 sdk boto3 dynamo db 的应用程序 Python/flask
- python - 在散点之间绘制多个箭头
- libgdx - Libgdx:无法解析导入的 org.json
- apache-spark - 我可以帮助识别自由格式文本列中的 8 位数字吗
- line-breaks - Splunk 中的简单连接 json 换行符
- amazon-web-services - Auto Scaling 组 EC2 实例启动失败