如果我直接返回firebase.database()。ref(),然后尝试执行database.push(),则会收到错误消息“ database.push()不是函数”。
但是,如果我只返回firebase.database()然后执行database()。ref()。push(),那么它确实可以工作。
1)我试图使返回函数异步化,但是没有用。 2)我尝试做 const database = firebase.database(); 返回database.ref(); 但这也不起作用。
Firebase.ts
export class Firebase implements Service<Req, Sub> {
private firebaseRef: App;
constructor(dispatch: Dispatch<any>) {
this.firebaseRef = !firebase.apps.length
? firebase.initializeApp(FIREBASECONFIG, AppName)
: firebase.apps[0];
}
// Here I return the reference to the database
public async database() {
return await this.firebaseRef.database().ref();
}
}
Database.ts
export const postData = <E>(
data: string,
Error: Error<E>,
): Req<any> => ({
service: Firebase,
request: {
run: async (firebaseRef: Firebase) => {
try {
const database = await firebaseRef.database();
// database.push() is not a function
await database.push(data);
} catch (e) {
return new Error(ErrorInfo.make(e));
}
},
},
});
预期结果:返回Firebase实时数据库参考并推送数据。
实际结果:“ database.push()不是函数”错误。