Получить все данные Firebase, связанные с конкретным UID - PullRequest
0 голосов
/ 17 октября 2018

У меня есть несколько сложная настройка Firebase, и мне интересно, возможно ли получить все данных, связанных с конкретным пользователем, за один вызов.

Моя схема Firebase выглядит следующим образом:

enter image description here

Пока что я сделал что-то подобное, но я думаю,Должен быть лучший способ (например, использование UID для получения данных вместо ручного анализа всего объекта БД)

export class AdminComponent {
  items: FirebaseListObservable<any[]>;
  private xyz: string;
  private firebaseList: FirebaseListObservable<any[]>;

  constructor(db: AngularFireDatabase, private router: Router, private route: ActivatedRoute) {
    this.firebaseList = db.list('/');
    this.items = this.firebaseList.subscribe(items => {
      const dbAnalytics = items[0];
      const dbBookings = items[1];
      const dbClasses = items[2];
      const dbLabs = items[3];
      const dbMachines = items[4];
      const dbPostLabs = items[5];
      const dbPreLabs = items[6];
      const dbUsers = items[7];

      for (const key in dbUsers) {
        if (dbUsers.hasOwnProperty(key)) {
         const userData = dbUsers[key];
         const userEid = userData['eid'];
         const userFullName = userData['name'];
         console.log(userEid, userFullName);
        }
      }

      for (const key in dbPostLabs) {
        if (dbPostLabs.hasOwnProperty(key)) {
          const postLabData = dbPostLabs[key];
          // Figure out why these objects are weird
        }
      }

    });

  }

}

Все предложения приветствуются.

1 Ответ

0 голосов
/ 17 октября 2018

Я предполагаю, что вы захотите получить только один объект из базы данных вместо того, чтобы получить их все, чтобы вы могли сделать что-то вроде этого. Кроме того, было бы легче ответить, если бы я мог видеть, как выглядят расширенные данные.

Если вы уже знаете uid объекта, вы можете сделать что-то вроде

this.db.database.ref(`labs/${uid}`).once('value')

Или если вы просто хотите получить полный список одного из объектов

this.db.list('labs/', ref => ref.orderByChild(<object key>).equalTo(<desired key value)).valueChanges();

Надеюсь, это поможет.Если это не то, что вам нужно, я мог бы снова ответить лучше, если бы данные были расширены.

...