Триггер для обнаружения изменений в базе данных - PullRequest
0 голосов
/ 19 ноября 2018

Когда дочерний объект обновляется или создается в базе данных Firebase, мне нужно вызвать REST API. Как это сделать? Пробовал использовать функцию "stream", но для того, чтобы вызвать stream, каждыйsec должен создать задание cron. Я хотел бы, чтобы через firebase был запущен некоторый триггер для вызова API.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

https://firebase.google.com/docs/reference/js/firebase.database.Reference#on

const ref = firebase.database().ref("node/you/want/to/observe");
ref.on('value', function(dataSnapshot) { //here you do your API call });

Кстати - вам не нужно «вызывать поток каждую секунду».Вы создаете на слушателе, который будет запускаться при каждом выполнении условия.Просто помните, чтобы выключить выключить , когда вы закончите.

0 голосов
/ 19 ноября 2018

Если вы используете базу данных Firebase Realtime, вы можете использовать облачные функции, которые запускают запись в вашу базу данных. Вот некоторые документы, которые объясняют это немного больше. Пример из документов ниже. В основном, при создании базы данных на /messages/{pushId}/original он запускает этот код, в котором вы можете обработать свою логику или вызвать остальные API. Вы также можете сделать это с помощью Firestore .

exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
    .onCreate((snapshot, context) => {
      // Grab the current value of what was written to the Realtime Database.
      const original = snapshot.val();
      console.log('Uppercasing', context.params.pushId, original);
      const uppercase = original.toUpperCase();
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to the Firebase Realtime Database.
      // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
      return snapshot.ref.parent.child('uppercase').set(uppercase);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...