You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore REST API查询问题:筛选Users集合中about字段为test2的用户

解决Firestore REST API查询Users集合的问题

嘿,作为Firestore新手,用REST API做查询确实容易踩些小细节坑!我看了你的请求结构,整体思路是对的,但有个关键错误可能导致你收到异常响应,另外再给你补充几个必看的注意事项:

1. 先修正请求体里的字段名错误

你请求体中value字段里写的"string": "test2"是不对的——Firestore REST API里字符串类型的值对应的字段名是stringValue,不是string。这是最可能导致查询失败的原因!修正后的请求体应该是这样:

{
  "structuredQuery": {
    "where": {
      "fieldFilter": {
        "field": {"fieldPath": "about"},
        "op": "EQUAL",
        "value": {"stringValue": "test2"}
      }
    },
    "from": [{"collectionId": "Users"}]
  }
}

2. 确认URL的参数替换和权限参数

  • 一定要把URL里的{myprojectid}替换成你实际的Firebase项目ID,比如你的项目ID是my-app-456,完整URL就是:
    https://firestore.googleapis.com/v1/projects/my-app-456/databases/(default)/documents/Users:runQuery
    
  • 如果你的Users集合是公开可读的,可以在URL末尾追加API密钥参数来访问:
    https://firestore.googleapis.com/v1/projects/my-app-456/databases/(default)/documents/Users:runQuery?key=你的API密钥
    

3. 非公开集合的身份验证

如果你的集合设置了安全规则(不是完全开放),仅用API密钥是不行的,需要携带OAuth2访问令牌:

  • 可以用Firebase CLI登录后,运行gcloud auth print-access-token获取临时有效令牌
  • 在请求的HTTP Headers里添加:Authorization: Bearer 你的访问令牌

4. 预期的成功响应示例

当请求完全正确时,你会收到包含匹配文档的响应,格式大概是这样:

[
  {
    "document": {
      "name": "projects/my-app-456/databases/(default)/documents/Users/abc123",
      "fields": {
        "about": {"stringValue": "test2"},
        "username": {"stringValue": "test_user"}
      },
      "createTime": "2024-05-20T09:12:34.567Z",
      "updateTime": "2024-05-20T09:12:34.567Z"
    }
  }
]

内容的提问来源于stack exchange,提问作者Mystique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:04:45