Firebase Firestore REST 请求 - 查询和过滤器

yme*_*sur 0 request firebase postman google-cloud-firestore

我在 firebase 项目上有一个 firestore 数据库。我想使用邮递员进行过滤或查询数据的休息请求。我正在使用“ https://firestore.googleapis.com/v1/projects/ /databases/(default)/documents/ ”来获取数据库中已知路径中的数据。这是我的数据库结构示例:

  • 用户 > xxxxx > 消息 > yyyyy> "sent":"true"

其中“users”和“messages”是集合,“xxxxx”和“yyyyy”是自动生成的文档ID(xxxxx是自动生成的用户ID)

我想要做的是找到 >"sent":"true"< 数据的“xxxxx”(用户)。

如果我知道“xxxxx”和“yyyyy”,我就成功了,但我不知道它们,因为它们是自动生成的,并且在我的数据库中彼此不同,并且不知道该怎么做。

Ren*_*nec 7

你需要运行一个查询,作为解释这里的REST API的文档。

既然你要查询所有的messages不同的子集user的文档,则需要“模拟”一个收集小组查询您的StructuredQuery。这样做的方法是将allDescendants元素设置trueCollectionSelector.

因此,在以下 URL 上发出 POST HTTP 请求即可解决问题:

  var URL = "https://firestore.googleapis.com/v1/projects/<your-project-id>/databases/(default)/documents:runQuery";
Run Code Online (Sandbox Code Playgroud)

POST 请求的正文应包含:

    "structuredQuery": {
        "from": [{
            "collectionId": "messages",
            "allDescendants": true
        }],

        "where": {
            "fieldFilter": {
                "field": {
                    "fieldPath": "sent"
                },
                "op": "EQUAL",
                "value": {
                    "stringValue": "true",
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

请注意,您需要向 Firestore 数据库添加单个字段索引,如下所示:

在此处输入图片说明


另请注意,如果您的字段sent属于类型Boolean(而不是String您的问题中所示),则您需要booleanValueValueJSON 元素中使用一个元素。