将数据从 firebase 函数返回到应用程序

Posted

技术标签:

【中文标题】将数据从 firebase 函数返回到应用程序【英文标题】:Return data from firebase function to app 【发布时间】:2019-10-11 14:02:48 【问题描述】:

在我的 ionic 应用程序中,我正在连接到条带支付网关。

我在firebase 中有一个函数,它在更新客户时被触发。

exports.updateStripeCustomer = functions.database.ref("/Customers/userId")
  .onUpdate((snapshot, context) => 
    const data = snapshot.after.val();
    return stripe.customers.createSource(data.payment_sources.customer_id, 
        source: data.payment_sources.source
    ).then(customer => 
        console.log("Update Stripe Customer");
        return customer;
    ,
        error => 
            return error;
        
    );
);

这是我更新客户的应用程序端的代码。在更新 firebase 中调用的触发器时,如何在下面的代码中获取触发器(firebase 函数)返回的数据?

 this.angularDb.object('/Customers/' + firebase.auth().currentUser.uid).update(
            cardsetup: 1,            
            payment_sources: 
              customer_id: this.user.customer_id,
              source: this.card.source.id
            
          ).then((res) => 
            loading.dismiss();
            alert("card details has been successfully updated.");            
            this.navCtrl.push(LoginPage);

      , (error) => 
        loading.dismiss();
        console.log("=========>", error.message)
        alert(JSON.stringify(error))
      );

如果 firebase 函数返回错误,我需要显示触发器返回的错误消息。有什么办法吗?

【问题讨论】:

这和你的其他问题基本一样吧?一次只问一个问题。 ***.com/questions/56301768/… @DougStevenson 另一个问题询问关于 firebase 上所有执行的完成情况,这即将将数据从 firebase 返回到客户端,但是两者都已连接。 【参考方案1】:

触发器对数据库中的事件做出反应,但对您的应用程序一无所知。因此,您的触发器和您的应用程序之间没有链接。

您可以使用交易 ID 和交易状态向您的用户添加交易集合。然后从您的应用程序中监听它并从触发器中更新它,以便在完成时收到通知。

或者您可以使用可调用的云函数而不是触发器。 https://firebase.google.com/docs/functions/callable

【讨论】:

以上是关于将数据从 firebase 函数返回到应用程序的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 函数返回数据到 Android [重复]

从 onCall firebase 云函数返回一个字符串

将 Firebase 数据库数组返回到另一个函数但返回空

从 iOS 应用程序调用时,Firebase 函数返回空值

从android中的firebase函数接收json数据给出空值

Flutter 函数使用 Firebase 返回空列表