# #python #google-cloud-firestore
Вопрос:
Я впервые играю с Firestore и использую Python 3.9.5
Я успешно добавил данные в свою базу данных на python, используя:
addDoc = db.collection('My-Collection').document()
addDoc.set(val)
где val-объект json.
Однако, когда я пытаюсь запросить коллекцию на number-field
:
docs = db.collection("Keno-Games").where("game-number", "==", 373).stream()
Это было скопировано из создателя консольных запросов firestore, где оно работает, но не работает, когда я пытаюсь использовать его в своем коде python. Ошибка в том, что:
Traceback (most recent call last):
File "/Users/timbolton/Desktop/kenoApi/kenoFirestoreIngest.py", line 21, in <module>
docs = db.collection("Keno-Games").where("game-number", "==", 373).stream()
File "/Users/timbolton/Desktop/kenoApi/venv/lib/python3.9/site-packages/google/cloud/firestore_v1/base_collection.py", line 243, in where
return query.where(field_path, op_string, value)
File "/Users/timbolton/Desktop/kenoApi/venv/lib/python3.9/site-packages/google/cloud/firestore_v1/base_query.py", line 278, in where
field_path_module.split_field_path(field_path) # raises
File "/Users/timbolton/Desktop/kenoApi/venv/lib/python3.9/site-packages/google/cloud/firestore_v1/field_path.py", line 84, in split_field_path
for element in _tokenize_field_path(path):
File "/Users/timbolton/Desktop/kenoApi/venv/lib/python3.9/site-packages/google/cloud/firestore_v1/field_path.py", line 64, in _tokenize_field_path
raise ValueError("Path {} not consumed, residue: {}".format(path, path[pos:]))
ValueError: Path game-number not consumed, residue: -number
Ответ №1:
Исправлено:
Пути полей не могут содержать -
символов в соответствии с документацией — Ограничения на пути полей