Ошибка при подключении firestore для хранения результата API, полученного в облачной оболочке с помощью Python

# #python #firebase #google-cloud-firestore

Вопрос:

Я просто хочу узнать, как хранить данные в Firestore с помощью Python и облачной платформы Google, поэтому я вызываю API для запроса некоторых примеров данных. Для этого я использую библиотеку запросов и библиотеку Firebase из пакета google.cloud.

Вот код, который я запускаю в Cloud Shell:

 import requests from google.cloud import firestore  url = "https://api.coindesk.com/v1/bpi/currentprice.json"  r = requests.get(url) resp: str = r.text  if not (resp=="null" or resp=="[]"):  db = firestore.Client()  doc_ref=db.collection("CoinData").add(r.json())  

Когда код пытается подключиться к Firebase, чтобы добавить json ответа API, я получил эту ошибку:

 Traceback (most recent call last):  File "/usr/local/lib/python3.7/dist-packages/google/api_core/grpc_helpers.py", line 66, in error_remapped_callable  return callable_(*args, **kwargs)  File "/usr/local/lib/python3.7/dist-packages/grpc/_channel.py", line 946, in __call__  return _end_unary_response_blocking(state, call, False, None)  File "/usr/local/lib/python3.7/dist-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking  raise _InactiveRpcError(state) grpc._channel._InactiveRpcError: lt;_InactiveRpcError of RPC that terminated with:  status = StatusCode.INVALID_ARGUMENT  details = "Invalid resource field value in the request."  debug_error_string = "{"created":"@1634689546.004704998","description":"Error received from peer ipv4:74.125.134.95:443","file":"src/core/lib/surface/call.cc","file_line":1070,"grpc_message":"Invalid resource field value in the request.","grpc_status":3}" gt;  The above exception was the direct cause of the following exception:  Traceback (most recent call last):  File "/home/antonyare_93/cloudshell_open/pruebas/data_coin_query.py", line 11, in lt;modulegt;  doc_ref=db.collection("CoinData").add(r.json())  File "/home/antonyare_93/.local/lib/python3.7/site-packages/google/cloud/firestore_v1/collection.py", line 107, in add  write_result = document_ref.create(document_data, **kwargs)  File "/home/antonyare_93/.local/lib/python3.7/site-packages/google/cloud/firestore_v1/document.py", line 99, in create  write_results = batch.commit(**kwargs)  File "/home/antonyare_93/.local/lib/python3.7/site-packages/google/cloud/firestore_v1/batch.py", line 60, in commit  request=request, metadata=self._client._rpc_metadata, **kwargs,  File "/home/antonyare_93/.local/lib/python3.7/site-packages/google/cloud/firestore_v1/services/firestore/client.py", line 815, in commit  response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,)  File "/usr/local/lib/python3.7/dist-packages/google/api_core/gapic_v1/method.py", line 142, in __call__  return wrapped_func(*args, **kwargs)  File "/usr/local/lib/python3.7/dist-packages/google/api_core/retry.py", line 288, in retry_wrapped_func  on_error=on_error,  File "/usr/local/lib/python3.7/dist-packages/google/api_core/retry.py", line 190, in retry_target  return target()  File "/usr/local/lib/python3.7/dist-packages/google/api_core/grpc_helpers.py", line 68, in error_remapped_callable  raise exceptions.from_grpc_error(exc) from exc google.api_core.exceptions.InvalidArgument: 400 Invalid resource field value in the request.  

Кто — нибудь знает, как я могу это исправить?

Ответ №1:

Я только что получил его.

Это была небольшая ошибка, я пропустил название проекта при вызове метода клиента firestore, вот рабочий код:

 import requests from google.cloud import firestore   url = "https://api.coindesk.com/v1/bpi/currentprice.json"  r = requests.get(url) resp: str = r.text  if not (resp=="null" or resp=="[]"):  db = firestore.Client(project="mytwitterapitest")  doc_ref=db.collection("CoinData").add(r.json())