导出的Firebase.ref()对象没有.on()方法



在我的React应用程序中,我正在初始化我的firebase对象,在它自己的文件中有它的db引用,然后在稍后使用更高阶的组件导出:

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;

写入数据库是没有问题的,但当我试图读取数据并对初始化的数据库引用调用.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

最新更新