如何将数据库触发的firebase函数写入外部API?

时间:2017-10-29 23:29:07

标签: firebase google-cloud-platform

如何使用firebase数据库函数触发器向外部API编写发布请求? (我已经支付了让你拨打外部api的火焰计划)

例如,您将{name}写入firebase数据库。写入firebase数据库时,会触发该函数,并对外部api端点www.externalendpoint.com进行后期请求?

exports.functionName=functions.database.ref('path/to/data/').onWrite(event=>{
//post request using the event.data.val()
})

谢谢< 3

2 个答案:

答案 0 :(得分:0)

只需要axios(或fetch)并返回一个承诺:

exports.functionName=functions.database.ref('path/to/data/').onWrite(event=>{
   const data = event.data.val()
   return axios.post('https://my-api.com/endpoint', { data })
})

确保您返回承诺,以便在解决后功能执行结束,否则您的408请求会超时,这会增加您的费用

答案 1 :(得分:0)

使用请求库。您可以使用npm进行安装,但是当您在项目中设置Firebase Functions时,它应该包含在您获得的库集中。这是文档,以防万一:

https://www.npmjs.com/package/request

要使用请求库,请在代码开头使用require:

var request = require('request');

在字典中撰写标题,例如:

var options = {
    method: 'POST',
    uri: www.externalendpoint.com,
    body: {
        'data': event.data.val()
    },
    headers: {
        'app_id': [YOUR_ID],
        'app_key': [YOUR_KEY]
    },
        json: true
}

然后您可以像这样发送:

request(options)
.then(function(repos) {

    // HANDLE RESPONSE HERE

})
.catch(function(err) {
    // HANDLE ERROR HERE
})

希望这会有所帮助!