Я использовал этот код, чтобы получить копию базы данных 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.
Есть идеи о причине этой новой ошибки? Большое вам спасибо!