为什么我不能直接返回firebase.database()。ref()?

时间:2019-07-10 08:09:35

标签: typescript react-native firebase-realtime-database react-native-firebase

如果我直接返回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()不是函数”错误。

0 个答案:

没有答案