我曾经使用此代码将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数据库的复制。
对这个新错误的原因有任何想法吗?非常感谢!