Firebase 如何在使用RESTAPI时删除Cloud Firestore字段类型说明符?

Firebase 如何在使用RESTAPI时删除Cloud Firestore字段类型说明符?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我完全虚构了“类型说明符”这个名称。我的意思是值前面的stringValue键。通常我希望得到更标准的回答:“name”:“name\u here” 在进行GET呼叫时是否可以删除这些内容 更重要的是,理解为什么它是这样的结构是很好的。即使对于POST-ing数据?简单的答案可能是,与实时数据库不同,CloudFireStore需要知道具体的类型,但深层次的原因是什么?像这样的格式是否有一个“官方”名称,我可以在这里做更多的研究 例如,推理是否与以下内容有关?有没有办法请求protobuf而不是

我完全虚构了“类型说明符”这个名称。我的意思是值前面的
stringValue
键。通常我希望得到更标准的回答:
“name”:“name\u here”

在进行
GET
呼叫时是否可以删除这些内容

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

例如,推理是否与以下内容有关?有没有办法请求protobuf而不是JSON

模式:

在拨打GET电话时是否可以删除这些选项

简而言之,否。Firestore REST API GET返回文档的一个实例。 看

关于“协议缓冲区”:当数据被反序列化时,您可以只使用一个函数将其转换为您希望使用的结构,例如,如果您愿意,可能会使用协议缓冲区,但似乎存在用于SWIFT、OBJECTIVE-C、ANDROID、JAVA、PYTHON、NODE.JS、,去吧,也许你不需要使用RESTAPI和手工制作一个协议缓冲区

希望能够回应您的“更重要”评论:

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

云Firestore数据模型如下所述:

实际上,数据模型是/其中一个文档可以包含一个子集合,关键字“name”、“fields”、“createdTime”、“upTime”位于Firestore文档(预定义的JSON文档模式)中。 Firestore REST API GET请求成功后,将生成一个文档实例,该实例可能包含文档集合或单个文档。看见API发现文档还有助于提供有关API的一些详细信息: $discovery/rest?版本=v1beta1

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

https://firestore.googleapis.com/v1beta1/projects/<yourprojectid>/databases/(default)/documents/<collectionName>/<documentID>
{
  "transaction": string,
  "document": {
    object(Document)
  },
  "readTime": string,
  "skippedResults": number,
}
总之:

实时数据库RESTAPI将根据您的“更多标准响应”,根据路径/节点返回对象的JSON

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


有几种语言可用的API库,因此可能不需要使用REST API和定制您自己的协议缓冲区,但如果您需要,它可能是可行的。

我不明白为什么有人说您不能,也不想尝试寻求帮助!说真的,这是一个真正的问题解决者

无论如何,我创造了一个脚本,将帮助你(也许现在已经晚了哈哈哈)

脚本对json进行编码,然后将其替换为字符串,以修改和删除Google类型的字段(低处理)

这是一个简单的代码,我知道你可以改进它,如果必要的话

警告

对于包含“{}”或“[]”的值,您可能会遇到问题。这可以通过foreach来解决,foreach将包含此元素的所有字符串转换为其他字符(如'◘' 或者♦', 一些你知道不存在的字符会有价值

例:嗨{Lorena}!---->嗨◘洛♦!

在此过程之后,再次转换为“{}”或“[]”

不能有与GOOGLE字段同名的字段

例:stringValue、arrayValue等

您可以在此链接中查看并下载脚本:

这个问题有点不清楚,但Firebase结构看起来如此的原因是……你把它放在了那里。NoSQL数据库中没有模式或预定义结构;只有键:值对。在键stringValue上方的结构中,此处的值为name_。name是该子节点的父键,字段是parent键到name键。如果您想知道它是如何变成这样的,请发布您的代码,我们来看看。@Jay我希望它是
“name”:“name\u here”
而不是
“name”:{“stringValue”:“name\u here”}
当进行GET调用时。我没有“创建架构”,我创建了
“name”:“name\u here”
。这是
云Firestore
而不是
实时数据库
。除非我设置错误,否则这就是它的工作原理。我使用Google API浏览器进行GET调用。我不相信Firestore会直接添加该键,因为它仍然是键:值对和键名由您决定。您能发布编写该键的代码吗node让我们看一看?@Jay你现在在使用Firestore吗?或者有?我可能在做一些疯狂的事情,但我只是在做一些标准的事情。我上传了截图。是的,我在。你创建数据的代码在哪里?请不要在你的问题中发布代码或Firebase结构的图像。请参阅
https://firestore.googleapis.com/v1beta1/projects/<yourprojectid>/databases/(default)/documents/<collectionName>/<documentID>
{
  "transaction": string,
  "document": {
    object(Document)
  },
  "readTime": string,
  "skippedResults": number,
}