首页 > 解决方案 > 如何使用 AngularFire2 执行可调用函数

问题描述

firebase 中的可调用函数可以执行如下:

firebase.functions().httpsCallable('addMessage');

我想知道 AngularFire2 中的等价物是什么。我已经扫描了文件,没有看到任何提及这一点。

如果没有等价物,那么我如何在 AngularFire2 中获取底层 firebase 对象的句柄?

标签: angularfirebaseangularfire

解决方案


确保将您的angularfire2版本更新到RC9或更高版本 - 因为这是PR合并的时候。

npm install angularfire2@latest

添加AngularFireFunctions到您providersapp.module.

import { AngularFireFunctions } from 'angularfire2/functions';

@NgModule({
  providers: [
    AngularFireFunctions
  ],
});

在您的组件中,您可以httpsCallableAngularFireFunctions.

constructor(
  private afFun: AngularFireFunctions,
) { }

ngOnInit() {
  // Angular Fire - Converts Promise to Observable
  this.afFun.httpsCallable('myFunction')({ text: 'Some Request Data' })
    .pipe(first())
    .subscribe(resp => {
      console.log({ resp });
    }, err => {
      console.error({ err });
    });

  // Convert back to Promise
  const respRef = await this.afFun.httpsCallable('myFunction')({ text: 'Some Request Data' })
    .toPromise();

  console.log({ respRef });
}

AngularFire2 存储库中的一条评论询问了为什么响应已转换为Observable. Firebase 文档具有返回 a 的函数-Promise因此请注意不一致之处 - 它可能会在未来发生变化。


推荐阅读