我如何获得从Firebase函数到离子客户端的响应

时间:2018-12-15 21:55:30

标签: firebase ionic-framework firebase-realtime-database ionic3 google-cloud-functions

我正在尝试理解Promise如何通过Firebase函数响应客户端,我将在此给出一个非常简单的示例:

这是离子方法,可以保存一些数据,然后在firebase中触发功能:

helloworld() {
   this.db.list(`/helloWorld/${this.userId}`).push({status: false})
     .then(res => console.log(res))
}

Firebase功能已触发

exports.helloWorld = database
 .ref('helloworld/{id}')
 .onWrite((change, context) => {
   const data = change.after.val();
   const id = context.params.id;

return admin
  .database()
  .ref(`/helloWorld/${id}`)
  .set({ status: true }).then((res) => res);

});

Here is the log from the helloworld method on client side, it seems is a database reference:

1 个答案:

答案 0 :(得分:2)

所有后台类型的函数,包括实时数据库触发器,都不会“返回”任何进行更改的客户端。客户唯一知道的就是它做了更改。

后台函数返回的承诺仅用于一个目的-当该函数的所有异步工作完成时,告诉Cloud Functions。他们不会将任何信息传达回客户。

如果您需要后台功能将一些信息传递回客户端,则需要某种沟通渠道。该功能可以在与客户端达成一致的位置写回数据库,也可以使用Firebase Cloud Messaging对应用程序执行ping操作。没有一种正确的方法可以做到这一点-您将不得不提出一些适合您需要的东西。