Я использую облачные функции Google для выполнения некоторых внутренних операций (например, подсчет / группировка статистики за день). Эти функции запускаются, когда определенные события (обновление, создание) происходят на пути в базе данных Firebase.
Я ищу способ извлечения пути (и параметров), который был обновлен / создан таким образом, чтобы я мог ориентироваться только на дробь. В частности, если путь path /messages/{pushId}/original
был обновлен, я хотел бы извлечь динамический параметр {pushId}
в моей функции python.
Как резюме:
Из Облачной документации мы можем развернуть облачную функцию с соответствующим триггером следующим образом:
Следующая команда gcloud развертывает функцию, которая будет запущена
по событиям обновления на path /messages/{pushId}/original
:
gcloud functions deploy YOUR_FUNCTION_NAME \
--trigger-event providers/google.firebase.database/eventTypes/ref.update \
--trigger-resource projects/YOUR-PROJECT-ID/instances/DATABASE-INSTANCE/refs/messages/{pushId}/original \
--runtime RUNTIME
В main.py
мы можем написать функцию, которая будет срабатывать при обновлении указанного выше пути:
import json
def hello_rtdb(data, context):
""" Triggered by a change to a Firebase RTDB reference.
Args:
data (dict): The event payload.
context (google.cloud.functions.Context): Metadata for the event.
"""
trigger_resource = context.resource
print('Function triggered by change to: %s' % trigger_resource)
print('Admin?: %s' % data.get("admin", False))
print('Delta:')
print(json.dumps(data["delta"]))
Пропавшая ссылка - это то, как мы используем данные, контекст, чтобы получить параметр {pushId}
?