有没有办法在每个Firebase实时数据库事务中调用webhook?

时间:2017-04-06 05:28:43

标签: firebase firebase-realtime-database

基本上,我在我的iOS应用程序中使用Firebase作为我的实时数据库。但是,我希望得到一个“事务日志”到我的服务器,即使它不是实时的。有没有办法设置它?也许有一个webhook?

2 个答案:

答案 0 :(得分:1)

只要数据库中的数据发生更改,您就可以使用Cloud Functions for Firebase编写运行某些JavaScript(在node.js环境中运行)的database trigger。您可以有效地使用它将实时数据库中的更改发送到您控制的任何其他服务器。您可能必须在服务器上实现webhook或其他端点才能接收数据。

为了在这样的函数中发出出站网络请求,您需要将项目升级到Blaze计划(如果还没有)。

答案 1 :(得分:0)

我无法理解你的问题,你想要实现什么目标?

您可以使用firebase“保存”在您的应用上完成的操作,至少有三种方式:

1)创建一个节点来记录事务并使用childupdates将事务保存在其节点中,同时保存在另一个节点中,如“transactionsLog”(https://firebase.google.com/docs/database/ios/read-and-write#update_specific_fields

2)如果您只需要跟踪用户在您的应用中完成的事件,您可以使用firebase Analytics并在每次交易时保存事件:https://firebase.google.com/docs/analytics/ios/start(开始使用)和https://firebase.google.com/docs/analytics/ios/start#log_events (记录事件)

3)要在事务完成后执行更复杂的操作,您可以使用Firebase函数(https://firebase.google.com/docs/functions/),您可以在javascript(它是nodeJs环境)中执行所需的一切。

示例第一种方法(Swift):

    let key = ref.child("transactions").childByAutoId().key
    let post = ["uid": userID,
                "author": username,
                "amount": amount,
                "date": date]
    let childUpdates = ["/transactions/\(key)": post,
                        "/transactionsLog/\(userID)/\(key)/": true]
    ref.updateChildValues(childUpdates)