Ошибка «ReferenceError: запрос не определен» при выполнении основных функций Firebase - PullRequest
0 голосов
/ 11 мая 2019

Попытка отослать webhook в Slack при каждом запуске onWrite (), направленной на мою базу данных Firebase.Пройдя несколько других постов / руководств, я смог развернуть приведенный ниже код, но получил ошибку ReferenceError: Request is not defined при выполнении.Я не могу понять, как исправить Запрос не определен.

const functions = require('firebase-functions');
const webhookURL = "https://hooks.slack.com/services/string/string";

exports.firstTest = functions.database.ref('first').onWrite( event => {
  return request.post(
    webhookURL,
    {json: {text: "Hello"}}
  );
});

1 Ответ

1 голос
/ 11 мая 2019

Вызов вашей облачной функции через URL-адрес и отправка ответа

Выполнив exports.firstTest = functions.database.ref('first').onWrite(), вы запускаете облачную функцию firstTest, когда данные создаются, обновляются или удаляются в базе данных реального времени.Он называется фоновым триггером , см. https://firebase.google.com/docs/functions/database-events?authuser=0

С этим триггером все происходит в серверной части , и у вас нет доступа к запросу (или ответ).Облачная функция не имеет никакого понятия о внешнем интерфейсе: например, она может быть запущена другим внутренним процессом, который записывает в базу данных.Если вы хотите обнаружить во внешнем интерфейсе результат облачной функции (например, создание нового узла), вам необходимо настроить прослушиватель для прослушивания местоположения этого нового узла.


Если вы хотите вызвать свою функцию через HTTP-запрос (возможно, из вашего интерфейса или из другого «потребителя API») и получить ответ на HTTP-запросвам необходимо использовать другой тип облачной функции, HTTP Cloud Function , см. https://firebase.google.com/docs/functions/http-events. См. также другой тип облачной функции, который вы можете вызвать напрямую: Callable Cloud Functions.


Наконец, обратите внимание, что:



Вызов из вашей облачной функции внешнего URL-адреса

Если вы хотите из облачной функции вызывать внешний URL-адрес (например, веб-крючок Slack, упомянутый в вашем вопросе), вам нужно использовать библиотеку, такую ​​как request-promise (https://github.com/request/request-promise).

* 1044).* См. Как получить URL с помощью функций Google Cloud? Запрос? or URL-адрес вызова функций Google Cloud, размещенный на Google App Engine для некоторых примеров

Важно : обратите внимание, что вам нужно быть по ценам "Flame" или "Blaze"plan.

На самом деле, бесплатный план «Spark» «разрешает исходящие сетевые запросы только в сервисы, принадлежащие Google».См. https://firebase.google.com/pricing/ (наведите курсор мыши на вопросительный знак, расположенный после заголовка «Облачные функции»)

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