Firestore python запрос, выдающий ошибку значения: Путь `число-поле` не израсходован остаток: -число

# #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:

Исправлено:

Пути полей не могут содержать - символов в соответствии с документацией — Ограничения на пути полей