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

Firestore REST API按指定邮箱查询用户UID请求报错求助

解决Firestore REST API按邮箱过滤查询UID的格式问题

正确的:runQuery请求配置

先确认请求端点、Headers和Payload完全符合Firestore REST规范,以下是针对你的场景可直接复用的配置:

请求基本信息

  • 请求方法: POST
  • URL: https://firestore.googleapis.com/v1/projects/project-123/databases/(default)/documents:runQuery
  • Headers:
    • Authorization: Bearer {你的Firebase服务端令牌}
    • Content-Type: application/json

正确的Payload示例

假设users集合中文档的email字段存储用户邮箱,且你需要返回匹配邮箱的文档ID(即UID):

{
  "structuredQuery": {
    "select": {
      "fields": [
        {
          "fieldPath": "__name__"
        }
      ]
    },
    "from": [
      {
        "collectionId": "users"
      }
    ],
    "where": {
      "fieldFilter": {
        "field": {
          "fieldPath": "email"
        },
        "op": "EQUAL",
        "value": {
          "stringValue": "target@example.com"
        }
      }
    }
  }
}

关键注意事项

  • 字段与值类型匹配: email字段路径要和Firestore中存储的字段名完全一致,值类型需对应(邮箱是字符串,所以用stringValue)。
  • __name__的作用: __name__是Firestore保留字段,代表文档ID(即你要的UID),如果需要返回其他字段,直接添加对应fieldPath即可。
  • Directus端适配: 在Directus中调用该接口时需确保:
    • 正确传递Authorization令牌(可通过Directus环境变量存储Firebase服务端密钥,调用令牌生成接口获取)
    • 请求的Content-Type严格设为application/json,避免Payload解析错误
    • 不对Payload做额外URL编码或转义,直接以JSON格式发送

常见错误排查

如果仍报格式错误,检查以下几点:

  1. structuredQuery层级是否正确(比如where下必须嵌套fieldFilter,不能直接写条件)
  2. 操作符op的取值是否为Firestore支持的全大写枚举值(比如EQUAL、LESS_THAN等)
  3. from数组中是否正确指定collectionId为users,无拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:42:08