React中未定义firebase.functions(),而firebase.firestore()可以工作



因此,我正在进行一个React项目,该项目使用Firebase来实现许多功能。现在我正在尝试在其中使用一些HTTPS可调用的函数

但我导入"firebase/functions"模块的方式似乎不正确。它给了我一个错误:

TypeError: Cannot read property 'httpsCallable' of undefined

以下是我如何进行导入和设置:

import app from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/functions';
const config = {
// the config info here
};
class Firebase {
constructor() {
app.initializeApp(config);
this.auth = app.auth();
this.db = app.firestore();
this.functions = app.functions();
}
// trying to call the function
doCreatePlanner = this.functions.httpsCallable('createPlanner')

应用Doug的建议后:

在构造函数中定义this.function之前,您正试图访问它。为了消除错误消息,您可以将对httpsCallable的调用移动到构造函数中:

我做到了:

class  Firebase {
constructor() {
app.initializeApp(config);
this.auth = app.auth();
this.db = app.firestore();
// Get the callable function reference here
this.createPlannerCloudFunc = app.functions().httpsCallable('createPlanner')
}

doCreatePlanner = (input) =>  this.createPlannerCloudFunc(input)

它起作用了!

但我还是有点困惑。

创建/使用类时不应该总是首先调用构造函数吗?

所以在doCreatePlanner函数中,this.functions应该保持app.functions(),对吗?

我可以在类中执行这样的函数,其中this.db包含app.firestore():

doUpdateRecord = (userRecord) =>
// create the user in firestore
this.db.collection(`users`).doc(userRecord.uid).set({
// record info here
})

引用this.functions = app.functions()指向一组对象。指针不包含函数,因为这些对象的类型不相同。一方面你有一个单一的实体,另一方面你也有一个对象列表。

this.db可以容纳app.firestore(),因为这些属性的类型是相同的。

相关内容

  • 没有找到相关文章

最新更新