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
相关产品推荐
相关产品推荐

