在 Firestore REST API 中查询嵌套对象

Posted

技术标签:

【中文标题】在 Firestore REST API 中查询嵌套对象【英文标题】:Query nested object in Firestore REST API 【发布时间】:2018-05-18 10:55:03 【问题描述】:

我一直在查询 Firestore REST API。我可以弄清楚如何通过常规键进行过滤,但我无法弄清楚如何通过嵌套对象键进行查询。

基本上,在浏览器客户端,我可以做到

firestore.collection("channels")
   .where("members.[memberID]", "==", true)
   .get()

但是,当我尝试在 REST API 中执行相同操作时,它显示无效参数。我正在尝试做


 "structuredQuery": 
  "where": 
   "fieldFilter": 
    "field": 
     "fieldPath": "members.[memberID]"
    ,
    "op": "EQUAL",
    "value": 
       booleanValue: "true"
    
   
  ,
  "from": [
   
    "collectionId": "channels"
   
  ]
 

但它在fieldPath 上给了我“无效参数”错误。有谁知道如何根据嵌套对象查询 Firestore REST API?

谢谢!

【问题讨论】:

我也有同样的问题...找不到好的答案。 我可能需要做的是使用 JSONModel 将其转换为字符串,然后再将其转换回来。这似乎有点难看。 抱歉这个愚蠢的问题,但是你在哪里通过结构化查询传递这个对象?我将它作为请求正文传递,它根本不起作用。有人可以分享一个完整的例子吗?会有帮助的。 @GeorgiArnaudov 您需要在请求正文中传递整个structuredQuery 对象,我上面的是请求正文 【参考方案1】:

我请求 Firebase 支持,他们说 fieldPath 中的特殊字符,例如“-”在我的情况下可以使用反引号或反斜杠进行转义。提到了in the documentation。就我而言,我需要这样做

members.`[memberID]`

希望对大家有帮助。

【讨论】:

这个对我帮助很大!非常感谢!

以上是关于在 Firestore REST API 中查询嵌套对象的主要内容,如果未能解决你的问题,请参考以下文章

在颤动中使用 REST api 将列表数据发送到云 Firestore 时出错

Firestore使用Rest API更新文档字段

Firestore 模拟器 REST API 身份验证

带有 Firebase Id 令牌的 Firestore REST API

Google Cloud Firestore REST API createDocument 自动生成 ID

Firestore REST API 使用 http-client 发出经过身份验证的请求