我正在尝试关注this tutorial。
在尝试重新配置firebase.js配置之前,我已经进行了此项工作,以便可以在应用程序中包括身份验证。
我正在尝试从我的应用程序中的集合中读取以下内容:
useEffect(() => {
let options = [];
// console.log(Firebase.db.collection("abs_for_codes"));
// Firebase.db.return
console.log(Firebase.db);
Firebase.db
.collection("abs_for_codes")
.get()
.then(
function(querySnapshot) {
querySnapshot.forEach(function(doc) {
options.push({
value: doc.data().title.replace(/( )/g, ""),
label: doc.data().title + " - ABS " + doc.id
});
});
这一切正常,直到我重新定义了firebase配置。
以前,该配置文件如下定义了一个firebase const:
import * as firebase from "firebase";
import firestore from "firebase/firestore";
import app from 'firebase/app';
const Firebase = app.initializeApp(config);
export default Firebase;
现在,我有:
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
class Firebase {
constructor() {
firebase.initializeApp(config).firestore();
this.auth = firebase.auth();
// this.db = app.database();
// this.db = app.firebase.database()
this.db = firebase.firestore();
}
}
export default Firebase;
[当我尝试使用此功能时,我可以在应用程序中登录Firebase,该应用程序会产生以下输出:
class Firebase {
constructor() {
firebase.initializeApp(config).firestore();
this.auth = firebase.auth();
// this.db = app.database();
// this.db = app.firebase.database()
this.db = firebase.firestore();
}
我希望能够登录Firebase.db以返回Firestore,但它会产生未定义的内容。
然后,当我尝试访问Firestore中的集合时,出现错误消息:
TypeError:无法读取未定义的属性'collection'
我已经看到this post,这表明与找不到数据库有关是一个问题,而不是收集问题。
旧的定义数据库方法与新的方法之间的唯一区别是,它位于类方法而不是const中。
如果在一个类中设置了firebase配置,是否还需要一些额外的东西?
您需要创建实例 Firebase class才能访问其属性。
更改
Firebase.db
.collection("abs_for_codes")
.get()
.then(querySnapshot => {
// do something here
});
to
const firebase = new Firebase();
firebase.db
.collection("abs_for_codes")
.get()
.then(querySnapshot => {
// do something here
});