【问题标题】:How to call Firebase Cloud Function directly from you angular project如何直接从您的 Angular 项目中调用 Firebase Cloud Function
【发布时间】: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/…

标签: angular firebase google-cloud-functions


【解决方案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。工作得很好!谢谢!
    猜你喜欢
    • 2018-11-17
    • 2018-01-24
    • 2021-11-24
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多