Почему я не могу вернуть firebase.database (). Ref () напрямую? - PullRequest
1 голос
/ 10 июля 2019

Если я возвращаю firebase.database (). Ref () напрямую, а затем пытаюсь сделать database.push (), я получаю ошибку «database.push () не является функцией».

Однако, если я возвращаю только firebase.database () и затем выполняю database (). ref (). push (), тогда это работает.

1) Я попытался сделать возвращающую функцию асинхронной, не сработало.2) Я попытался сделать const database = firebase.database ();return 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 Realtime Database и данные

Фактические результаты: ошибка «database.push () не является функцией».

...