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