触发以检测Firebase的变化

时间:2018-11-19 10:24:12

标签: django firebase firebase-realtime-database psql

在Firebase数据库中更新或创建子项时,我需要触发REST API。怎么做呢? 尝试使用“流”功能,但是为了调用流,secretsec必须创建一个cron作业。我希望通过firebase进行一些触发来调用API。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Firebase Realtime数据库,则可以使用在写入数据库时​​触发的Cloud Functions。这里是some docs that explain,还有更多。来自文档的示例如下。基本上是在/messages/{pushId}/original上创建数据库时,它将触发此代码,您可以在其中处理逻辑或调用rest 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);
    });

答案 1 :(得分:1)

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 });

顺便说一句-您不必“每秒都调用流”。您在监听器上创建 ,只要满足条件,该监听器就会触发。完成后,Jut记得记住turn it off