Триггеры Google Cloud Firestore не обнаруживают запись в базу данных - PullRequest
2 голосов
/ 10 января 2020

ОС: Ma c ОС Catalina v 10.15.1

Python версия: Python 3.7.1

Я пишу функции облака в Python для быть вызванным записыванием / обновлением / et c. в базу данных Firestore. По сути, моя функция выглядит так в моем main.py:

def hello_firestore(data, context):
    """ Triggered by a change to a Firestore document.
    Args:
        data (dict): The event payload.
        context (google.cloud.functions.Context): Metadata for the event.
    """
    print("Hello")

. Я хочу, чтобы эта функция следила за обновлениями документа test_collection/test_document. Я развернул эту функцию, используя:

gcloud functions deploy hello_firestore \
  --runtime python37 --trigger-event providers/cloud.firestore/eventTypes/document.write \
  --trigger-resource projects/PROJECT_ID/databases/default/documents/test_collection/test_document

Функция успешно развернута и отображается в моей консоли Firebase и в консоли GCP. У меня на локальном компьютере работает скрипт:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import time

cred = credentials.Certificate("./path/to/adminsdk.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

doc_ref = db.collection(u'test_collection').document(u'test_document')
doc_ref.set({u'test_field':'test_value'})

time.sleep(60)

doc_ref.update({u'test_field':'new_value'})

База данных обновляется соответственно. Я ожидаю, что функция будет выполнена (поскольку условие триггера выполнено), и я ожидаю увидеть соответствующий вывод stdout в журналах консоли Firestore или журналах консоли GCP. Однако там ничего нет - ни сообщения об ошибке, ни указания на событие триггера (единственные журналы - это те, которые возникают в результате развертывания функции). Кроме того, ручное редактирование базы данных в консоли Firestore не дает эффекта.

Я также пытался написать эту облачную функцию в Node.js (и соответственно развернуть ее), и результат тот же - никаких признаков того, что событие произошло.

Любые советы / предложения будут великолепны. Спасибо!

1 Ответ

1 голос
/ 10 января 2020

Полагаю, вам нужна следующая команда развертывания, где default в скобках:

gcloud functions deploy hello_firestore \
  --runtime python37 --trigger-event providers/cloud.firestore/eventTypes/document.write \
  --trigger-resource projects/PROJECT_ID/databases/(default)/documents/test_collection/test_document

Подробнее см. Здесь: https://cloud.google.com/functions/docs/calling/cloud-firestore

...