Javascript 导出的Firebase.ref()对象是否没有.on()方法?
在我的React应用程序中,我正在使用firebase对象自身文件中的db引用初始化firebase对象,然后使用更高阶的组件将其导出:Javascript 导出的Firebase.ref()对象是否没有.on()方法?,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,在我的React应用程序中,我正在使用firebase对象自身文件中的db引用初始化firebase对象,然后使用更高阶的组件将其导出: class Firebase { constructor() { app.initializeApp(firebaseConfig); this.auth = app.auth(); this.db = app.database(); console.log(this.auth) } . . . user
class Firebase {
constructor() {
app.initializeApp(firebaseConfig);
this.auth = app.auth();
this.db = app.database();
console.log(this.auth)
}
.
.
.
user = uid => this.db.ref(`user/${uid}`);
users = () => this.db.ref('users');
project = pid => this.db.ref(`project/${pid}`);
projects = () => this.db.ref('projects');
}
export default Firebase;
写入数据库没有问题,但是当我尝试读取数据并在初始化的db REF上调用.on()时,我发现它们不是函数
const ProjectPage = props => {
const ref = props.firebase.project;
ref.on("value", snap => {
console.log(snap);
})
return (
.....
)
}
export default withFirebase(ProjectPage);
真正让我困惑的是,如果我在组件中初始化一个ref,它是否有正确的方法:
const ref = props.firebase.db.ref('thisworksfine');
ref.on("value", snap => {
console.log(snap);
})
这是我第一次在这里提问,但我被这个问题难住了。为什么在初始化时在组件文件中附加正确的方法,而不是在单独的文件中附加正确的方法,当然它们引用的是完全相同类型的对象
非常感谢您的帮助,谢谢您的阅读。您的数据库引用是函数,因此您应该像这样调用它们:
const ref = props.firebase.project();
现在您可以访问ref属性和方法
这只是对实际函数的引用,而不是该函数中返回的值:
您的数据库引用是函数,因此您应该像这样调用它们:
const ref = props.firebase.project();
现在您可以访问ref属性和方法
这只是对实际函数的引用,而不是该函数中返回的值:
非常感谢你,哈哈。。。我有一种感觉,这很简单,但我就是看不出来。谢谢你,哈哈。。。我有一种感觉,就是这么简单,但我就是看不出来