Google Cloud Firestore REST API createDocument 自动生成 ID

Posted

技术标签:

【中文标题】Google Cloud Firestore REST API createDocument 自动生成 ID【英文标题】:Google Cloud Firestore REST API createDocument auto genarates ID 【发布时间】:2018-08-03 03:03:05 【问题描述】:

这是我为在我的 firestore 数据库中创建一个新文档而进行的 REST API 调用

发布https://firestore.googleapis.com/v1beta1/projects/[xxx]/databases/(default)/documents/items

这是我添加到 post 方法主体的有效负载:

"name": "projects/[xxx]/databases/(默认)/documents/items/6001156905205​​", “字段”: “姓名”: "stringValue": "Freshpak Rooibos Tea 80Pk" , “描述”: "stringValue": "享受一杯 Freshpak Rooibos 你的 No 1 Rooibos 茶。 , "createTime": "2018-02-21T14:20:55.753234Z", “更新时间”:“2018-02-21T14:20:55.753234Z”

我收到以下错误消息:

“错误”: “代码”:400, "message": "document.name 不得设置", “状态”:“INVALID_ARGUMENT”

当我从负载中删除“名称”属性时,它会在 firebase 中创建记录,但随后会自动生成文档 ID。我希望 ID 为 6001156905205​​。

我做错了吗?

谢谢 格特

【问题讨论】:

【参考方案1】:

您需要指定要使用的文档 ID,作为查询参数,详细信息为here。 createTimeupdateTime 仅用于输出,因此它们将由 Cloud Firestore 自动设置。

HTTP 请求

POST https://firestore.googleapis.com/v1beta1/projects/[xxx]/databases/(default)/documents/items?documentId=6001156905205

请求正文


  "fields": 
    "Name": 
      "stringValue": "Freshpak Rooibos Tea 80Pk"
    ,
    "Description": 
      "stringValue": "Enjoy a cup of Freshpak Rooibos your no 1 Rooibos tea.
    
  

【讨论】:

如果失败,您可能需要将您的客户 ID 放在引号中:?documentId="6001156905205" @JasonBerryman 您如何为上述 json 主体创建数据模型?我的 C# 代码将 StringValue、IntValue 创建为类。有没有办法可以将普通 json 转换为 firebase 可接受的集合 json? @KhanXc 我不知道。我对 C# 不熟悉。抱歉,我帮不上忙 很好,它有效。谢谢

以上是关于Google Cloud Firestore REST API createDocument 自动生成 ID的主要内容,如果未能解决你的问题,请参考以下文章

使用 firebase_admin 或 google.cloud.firestore 在 python 中的 Firestore 客户端(作为用户)

Google Firestore 是 Google Cloud Datastore 的子集还是超集?

Google Cloud Firestore

限制通过VPC网络访问Google Cloud Firestore。

使用 node.js 标准环境在 AppEngine 上找不到模块 @google-cloud/firestore

Kivy buildozer Firestore 错误 - ModuleNotFoundError:没有名为“google.cloud”的模块