Извлечение параметров из событий, запущенных на пути в базе данных Firebase с помощью облачных функций - PullRequest
0 голосов
/ 15 января 2019

Я использую облачные функции 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}?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...