使用 REST API 时如何删除 Cloud Firestore 字段类型说明符?

kga*_*dis 5 firebase google-cloud-firestore

“类型说明符”这个名字完全是我杜撰的。我的意思是stringValue键在值前面。通常我会期待一个更标准的回应:"name" : "name_here"

{
 "fields": {
  "name": {
   "stringValue": "name_here"
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

打电话时可以删除这些吗GET

更重要的是,很高兴理解为什么它是这样的结构。即使是POST数据?简单的答案可能是因为 Cloud Firestore 与实时数据库不同,需要知道具体类型,但更深层的原因是什么?是否有这样的格式的“官方”名称,我可以在那里做更多研究?

例如,推理是否与Protocol Buffers有关?有没有办法请求 protobuf 而不是 JSON?

架构: 在此输入图像描述

Ste*_*eve 4

\n

进行 GET 调用时是否可以删除它们?

\n
\n\n

简而言之,不会。Firestore REST API GET 返回 Document 的实例。\n请参阅https://firebase.google.com/docs/firestore/reference/rest/v1beta1/projects.databases.documents#Document

\n\n
{\n  "name": string,\n  "fields": {\n    string: {\n      object(Value)\n    },\n    ...\n  },\n  "createTime": string,\n  "updateTime": string,\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

关于“协议缓冲区”:当数据被反序列化时,您可以使用一个函数来转换为您希望使用的结构,例如,如果您愿意,可以使用协议缓冲区,但似乎有 SWIFT、OBJECTIVE-C 的库、ANDROID、JAVA、PYTHON、NODE.JS、GO 也许您\xe2\x80\x99不需要使用 REST API 并制作协议缓冲区。

\n\n

希望解决您的 \xe2\x80\x9c 更重要的是 \xe2\x80\x9d 评论:

\n\n

正如您在问题中所回避的那样,Firestore 与实时数据库具有不同的数据模型。\n实时数据库数据模型允许 JSON 对象具有您想要定义的架构和关键字。\n正如您所指出的,Firestore 数据模型使用预定义的模式,在这方面,某些关键字和结构无法更改。

\n\n

Cloud Firestore 数据模型如下所述: https: //firebase.google.com/docs/firestore/data-model

\n\n

实际上,数据模型是 / 其中文档可以包含子集合和关键字 \xe2\x80\x9cname\xe2\x80\x9d、\xe2\x80\x9cfields\xe2\x80\x9d、\xe2\x80\x9ccreatedTime\xe2 \x80\x9d、\xe2\x80\x9cupTime\xe2\x80\x9d 位于 Firestore 文档(预定义的 JSON 文档架构)中。\n成功的 Firestore REST API GET 请求会生成一个可能包含集合的文档实例文档或单个文档。请参阅https://firebase.google.com/docs/firestore/reference/rest/。此外,API 发现文档还有助于提供有关 api 的一些详细信息:\n https://firestore.googleapis.com/ $discovery/rest?version=v1beta1

\n\n

REST API URL 结构示例的形式如下:

\n\n
https://firestore.googleapis.com/v1beta1/projects/<yourprojectid>/databases/(default)/documents/<collectionName>/<documentID>\n
Run Code Online (Sandbox Code Playgroud)\n\n

可以屏蔽文档中的某些字段,但 Firestore 文档架构仍然会保留。请参阅三个示例 GET:

\n\n\n\n

看另一个示例,用于运行查询的 REST API\n https://firebase.google.com/docs/firestore/reference/rest/v1beta1/projects.databases.documents/runQuery \n响应正文的格式如下:

\n\n
{\n  "transaction": string,\n  "document": {\n    object(Document)\n  },\n  "readTime": string,\n  "skippedResults": number,\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

总之:

\n\n

实时数据库 REST API 将根据您的 \xe2\x80\x9cmore 标准响应\xe2\x80\x9d 根据路径/节点返回对象的 JSON。

\n\n

Firestore REST API 返回特定的 Firestore 预定义响应结构。

\n\n

有适用于多种语言的 API 库,因此也许不需要使用 REST API 并制作自己的协议缓冲区,但如果您需要,它可能是可行的。

\n