Python Firestore:REST API runQuery方法需要错误的父路径模式
我正在尝试使用FireStoreRESTAPI执行一个简单的查询 基于谷歌应用程序引擎标准,我无法使用谷歌云firestore客户端,该客户端尚未与GAE标准兼容。相反,我将使用GoogleAPI python客户端作为其他GoogleAPI 以下是我初始化服务的方式:Python Firestore:REST API runQuery方法需要错误的父路径模式,python,rest,google-cloud-firestore,Python,Rest,Google Cloud Firestore,我正在尝试使用FireStoreRESTAPI执行一个简单的查询 基于谷歌应用程序引擎标准,我无法使用谷歌云firestore客户端,该客户端尚未与GAE标准兼容。相反,我将使用GoogleAPI python客户端作为其他GoogleAPI 以下是我初始化服务的方式: service = build('firestore', 'v1beta1', credentials=_credentials) 完成后,我将按以下方式执行查询: query = { "structuredQuery":
service = build('firestore', 'v1beta1', credentials=_credentials)
完成后,我将按以下方式执行查询:
query = { "structuredQuery":
{
"from": [{ "collectionId": "mycollection" }],
"where": {
"fieldFilter":
{
"field": { "fieldPath": "myfield" },
"op": "EQUAL",
"value": { "stringValue": "myvalue" }
}
}
}
}
response = service.projects().databases().documents().runQuery(
parent='projects/myprojectid/databases/(default)/documents',
body=query).execute()
这将返回一个非常明确的错误:
TypeError:参数“父”值
“项目/myprojectid/数据库/(默认)/文档”
与模式不匹配
“^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$”
这显然是真的。我的观点是,文档明确指出,这应该是一个可接受的值:
父资源名称。格式为:projects/{project\u id}/databases/{database\u id}/documents
或projects/{project\u id}/databases/{database\u id}/documents/{document\u path}
。例如:projects/my project/databases/my database/documents
或projects/my project/databases/my database/documents/chattroom/my chattroom
(字符串)
使用API资源管理器(或curl)执行相同的查询工作正常,返回预期结果。(即使API资源管理器声明父参数与预期模式不匹配)
发现文档(由google api python客户端使用)似乎对父参数强制执行此模式检查,但关联的正则表达式实际上不允许唯一有效的父路径(projects/myprojectd/databases/(default)/documents)
我尝试使用不同的模式路径,如projects/myprojectd/databases/(default)/documents/*/**
,这样可以使查询正常运行,但不会返回任何结果
有没有人有同样的问题,或者我做错了什么?
我能想到的唯一解决办法是直接向正确的url发出请求,而不使用GoogleAPI python客户端,但这意味着我必须手动处理身份验证过程,这是一个痛苦的过程
谢谢你能提供的任何帮助
谷歌云firestore
现在与标准应用程序引擎兼容
您找到解决这个问题的方法了吗?我面临着完全相同的问题。我只是为这个特定的方法手动实现了调用。我要做的是像通常使用GoogleAPI python客户端那样构建服务,然后使用服务中的auth令牌通过urlfetch(或多个请求)发出请求,并在头中传递令牌。如果令牌已过期,您还需要刷新它。此处相同,但API资源管理器不起作用