python

时间:2019-06-18 22:33:32

标签: python firebase google-cloud-firestore grpc grpc-python

我曾经使用此代码将Firestore数据库的副本复制到本地,但最后一天突然发现此错误:

google.api_core.exceptions.InvalidArgument: 400 Document parent name "projects/some-niceproject/databases/(default)" lacks "/" at index 43.

这是它的摘要:

grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
        status = StatusCode.INVALID_ARGUMENT
        details = "Document parent name "projects/some-niceproject/databases/(default)" lacks "/" at index 43."
        debug_error_string = "{"created":"@1560895696.899080325","description":"Error received from peer ipv4:172.217.17.10:443","file":"src/core/lib/surface/call.cc","file_line":1046,"grpc_message":"Document parent name "projects/some-niceproject/databases/(default)" lacks "/" at index 43.","grpc_status":3}"

所以,我通常的处理方式是初始化应用程序,并初始化firestore客户端:

default_app = firebase_admin.initialize_app(
            credential=cred
        )
firestore_db = firestore.client()

暂时没有问题,这不是我第一次这样做,但是当我做list(collections)时出现问题。

我认为问题在于,我一直在尝试设置数据库路径的末尾缺少“ /”,如下所示:

print(firestore_db._rpc_metadata_internal)
[('google-cloud-resource-prefix', 'projects/some-niceproject/databases/(default)')]
firestore_db._rpc_metadata_internal = [('google-cloud-resource-prefix', 'projects/some-niceproject/databases/(default)/')]
print(firestore_db._rpc_metadata_internal)
[('google-cloud-resource-prefix', 'projects/some-niceproject/databases/(default)')]

但没有结果。

最糟糕的是,如果我设置了某个集合的名称,我可以毫无问题地访问文档。

我尝试将grpcio降级到较旧的版本(现在在1.21.1中),并且使用firebase_admin进行了降级,但是没有任何结果。

我可以继续说出每个集合的名称,但是我希望没有必要,因为我正在使用一个软件包来简化Firebase数据库的复制。

对这个新错误的原因有任何想法吗?非常感谢!

0 个答案:

没有答案