【问题标题】:Firebase Cloud Firestore - Fail to write via REST APIFirebase Cloud Firestore - 无法通过 REST API 写入
【发布时间】:2020-05-22 13:03:05
【问题描述】:

这不是身份验证错误,数据库规则上启用了写入。 我的云 Firestore 数据库如下图所示。 有一个 COLLECTION 叫 colA,里面有一个 DOCUMENT 叫 docA,里面存储了一些字段(字符串)。

在 Postman 上,如果我执行 GET https://firestore.googleapis.com/v1/projects/eletronica-ab6b1/databases/(default)/documents/colA/docA,我会收到以下答案,并且是正确的:

{
  "name": "projects/eletronica-ab6b1/databases/(default)/documents/colA/docA",
  "fields": {
    "fieldB": {
      "stringValue": "ABCD"
    },
    "fieldA": {
      "stringValue": "888"
    }
  },
  "createTime": "2020-01-31T16:48:26.859181Z",
  "updateTime": "2020-02-05T19:21:49.654340Z"
}

现在,当我尝试通过 POST https://firestore.googleapis.com/v1/projects/eletronica-ab6b1/databases/(default)/documents/colA/docA 编写一个带有 JSON 内容的新字段 (fieldC) 时:

{
  "name": "projects/eletronica-ab6b1/databases/(default)/documents/colA/docA",
  "fields": {
    "fieldC": {
      "stringValue": "1000"
    }
  }
}

发送后,我收到:

{
  "error": {
    "code": 400,
    "message": "Document parent name \"projects/eletronica-ab6b1/databases/(default)/documents/colA\" lacks \"/\" at index 60.",
    "status": "INVALID_ARGUMENT"
  }
}

我做错了什么?我真的很想通过 REST API 在那里写字符串。 问候。

【问题讨论】:

    标签: database firebase google-cloud-firestore


    【解决方案1】:

    根据[参考文档],通过PATCH 请求更新文档。

    POST 请求用于在集合中创建新文档,这可能解释了您得到的错误:您指向一个文档,但 POST 需要一个集合路径。

    【讨论】:

    • 是的,它适用于 PATCH。但是,使用 PATCH,在 SEND 之后,fieldA 和 fieldB 被删除,只有 fieldC 保留在同一个 DOCUMENT 中。你知道如何简单地添加一个字段而不排除当前内容吗?
    • 您需要为此传递一个updateMask。示例见stackoverflow.com/a/51792558
    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 2018-08-03
    • 2022-01-23
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多