繁体   English   中英

Firebase Firestore REST 请求-查询和过滤

[英]Firebase Firestore REST Request - Query and Filter

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

  • 用户 > xxxxx > 消息 > yyyyy>“已发送”:“真”

其中“用户”和“消息”是 collections,“xxxxx”和“yyyyy”是自动生成的文档 ID(xxxxx 是自动生成的用户 ID)

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

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

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

由于要查询不同user文档的所有messages子集合,因此需要在StructuredQuery “模拟”一个集合组查询 这样做的方法是在CollectionSelector allDescendants元素设置为true

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

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

POST 请求的正文应包含:

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

        "where": {
            "fieldFilter": {
                "field": {
                    "fieldPath": "sent"
                },
                "op": "EQUAL",
                "value": {
                    "stringValue": "true",
                }
            }
        }
    }

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

在此处输入图片说明


另请注意,如果您sent的字段是Boolean类型(而不是您的问题中显示的String ),则您需要在Value JSON 元素中使用booleanValue元素。

由于某种原因,我无法让它工作。 我有一个名为 dzs 的集合,其中包含一些带有自动生成 ID 的文档。

我想查询并查找具有特定地址 email 的文档。 当我在 Postman 中尝试此操作时,它返回(错误 400 错误请求)

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

    "where": {
        "fieldFilter": {
            "field": {
                "fieldPath": "email"
            },
            "op": "EQUAL",
            "value": {
                "stringValue": "123@123.com",
            }
        }
    }
}

将父集合/文档路径添加到 URL:

var URL = "https://firestore.googleapis.com/v1/projects/<your-project-id>/databases/(default)/documents/users/xxxxx:runQuery";

然后使collectionId为“messages”和allDescendents false:

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

    "where": {
        "fieldFilter": {
            "field": {
                "fieldPath": "sent"
            },
            "op": "EQUAL",
            "value": {
                "stringValue": "true",
            }
        }
    }
}

来源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM