如何直接从您的 Angular 项目中调用 Firebase Cloud Function

Posted

技术标签:

【中文标题】如何直接从您的 Angular 项目中调用 Firebase Cloud Function【英文标题】:How to call Firebase Cloud Function directly from you angular project 【发布时间】:2018-10-25 06:32:07 【问题描述】:

我是 firebase 新手,正在尝试了解如何直接从我的 angular 应用程序调用 firebase 云函数。我以前使用 angularfire2 来做 Firebase 的东西,但似乎 angularfire2 不支持云功能,所以现在我迷路了,不知道该怎么做。

我查看了文档,但我无法真正理解我应该如何从我的 service.ts 文件之一中调用云函数。来自Firebase Doc 的示例如下所示。 我想知道如何在我的一个角度 service.ts 文件中获取 "functions" 引用?

functions.httpsCallable("addMessage").call(["text": inputField.text])  (result, error) in
  if let error = error as NSError? 
    if error.domain == FunctionsErrorDomain 
      let code = FunctionsErrorCode(rawValue: error.code)
      let message = error.localizedDescription
      let details = error.userInfo[FunctionsErrorDetailsKey]
    
    // ...
  
  if let text = (result?.data as? [String: Any])?["text"] as? String 
    self.resultField.text = text
  

我需要在 app.module.ts 文件中导入一些东西还是我应该做什么?

非常感谢任何帮助!谢谢!

【问题讨论】:

firebase.google.com/docs/functions/… ?请参阅网络标签。您可以在 .ts 文件中使用 var addMessage = firebase.functions().httpsCallable('addMessage'); addMessage(text: messageText).then(function(result) // Read result of the Cloud Function. var sanitizedMessage = result.data.text; // ... );,因为 typescript 只是 javascript 的超集。 是的。我明白你的回答。虽然我没有设法导入正确的东西以便在 firebase.functions() 中引用“firebase”...... 换句话说:我得到:[ts] 找不到名称“firebase”。所以我的问题变成了:我需要导入什么才能引用 firebase? @Phil 你知道我需要导入什么吗? :) 对于非角度模块,您需要使用 require:const firebase = require("firebase");。有关示例,请参见此处:github.com/angular/material2/blob/master/tools/gulp/util/… 【参考方案1】:

我也遇到了这个问题,James 的回答并没有真正回答我在哪里可以找到一个很好的例子来说明它在 Angular 中的外观。但是,在 Firebase 存储库中 a README with small, but enough documentation can be found。

这就是你可以做到的紧凑程度:

import  AngularFireFunctions  from '@angular/fire/functions';

constructor(
    private fns: AngularFireFunctions
  ) 

  addMessage(): Observable<any> 
    const addMessage = this.fns.httpsCallable('addMessage'); 
    return addMessage(text: "test");
  

【讨论】:

【参考方案2】:

这里是维护者,Angularfire 前几天在 RC 9 中发布了 AngularFireFunctions 模块。 See the AngularFire changelog entry here.

请注意,从 RC 8 开始,您需要至少升级到 Firebase 5.0.2 和 rxjs 6。rxjs-compat 将帮助您仍然依赖 rxjs 5。

【讨论】:

太棒了!我下载了 AngularFire 的新版本。导入了 AngularFireFunctions 并更新了 Firebase,rxjs。工作得很好!谢谢!

以上是关于如何直接从您的 Angular 项目中调用 Firebase Cloud Function的主要内容,如果未能解决你的问题,请参考以下文章

从您的应用程序内部调用地图以获取路线 - iOS 5 iOS 6

sh 从您的Ionic项目创建签名和zipaligned APK

如何从您的子查询表中打印两个属性值

“从您的主线程调用它可能会导致死锁和/或 ANR,同时从 GoogleAuthUtil(Android 中的 Google Plus 集成)获取 accessToken”

从您的方法返回异常是不好的做法

Iphone:如何从您的应用程序在 google maps api 中启动路线