Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Firestore:REST API runQuery方法需要错误的父路径模式_Python_Rest_Google Cloud Firestore - Fatal编程技术网

Python Firestore:REST API runQuery方法需要错误的父路径模式

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":

我正在尝试使用FireStoreRESTAPI执行一个简单的查询

基于谷歌应用程序引擎标准,我无法使用谷歌云firestore客户端,该客户端尚未与GAE标准兼容。相反,我将使用GoogleAPI python客户端作为其他GoogleAPI

以下是我初始化服务的方式:

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资源管理器不起作用