You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cloud Firestore REST API无法实现文档字段自增的问题求助

解决Cloud Firestore REST API字段自增的格式问题

我看到你在尝试用Firestore REST API实现字段自增时遇到了格式错误,这两个问题其实都是因为请求体结构和API端点不匹配导致的,我来一步步帮你修正:

错误原因分析

第一个错误:请求体结构错误

你最初的请求体把currentDocument和transform拆成了writes数组里的两个独立对象,但Firestore的批量写入要求每个write条目是一个单一对象,里面可以同时包含currentDocument(用于条件判断)和transform(用于字段变换)。

第二个错误:API端点选择错误

你后续修改后出现的Unknown name "writes" at 'document'错误,说明你可能调用了单个文档操作的API端点(比如documents/{documentPath}),但批量写入的writes字段只适用于批量写入端点documents:batchWrite。

正确的实现方案

1. 使用正确的API端点

确保你调用的是批量写入的端点:

POST https://firestore.googleapis.com/v1/projects/project_name/databases/(default)/documents:batchWrite

2. 修正后的请求体

把currentDocument和transform放在同一个write对象里,同时注意increment字段的格式:你需要指定要自增的字段名(用fieldPath),而不是把字段名作为increment的键。

正确的JSON请求体如下:

{
  "writes": [
    {
      "currentDocument": { "exists": true },
      "transform": {
        "document": "projects/project_name/databases/(default)/documents/collection_name/user_id",
        "fieldTransforms": [
          {
            "fieldPath": "c",
            "increment": { "integerValue": "2" }
          }
        ]
      }
    }
  ]
}

关键细节说明

  • fieldPath:指定要自增的字段名称(这里是c),这是你之前遗漏的部分,之前错误地把字段名直接作为increment的属性键。
  • currentDocument: exists: true确保只有当文档存在时才执行自增操作,避免创建新文档。
  • 必须使用documents:batchWrite端点,因为单个文档的update或set端点不支持transform类型的操作,只有批量写入端点支持字段变换(自增、数组添加等)。

这样修改后,发送请求就能正确把字段c的值增加2了。

内容的提问来源于stack exchange,提问作者Arnav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:23:11