【问题标题】:Get all firebase data associated with a particular UID获取与特定 UID 关联的所有 firebase 数据
【发布时间】:2018-10-16 22:24:16
【问题描述】:

我有一个有点复杂的 Firebase 设置,我想知道是否有可能在一次调用中获取与特定用户关联的所有数据。

我的 Firebase 架构如下图所示:

到目前为止,我已经做了类似的事情,但我认为必须有更好的方法(比如使用 UID 获取数据而不是手动解析整个 db 对象)

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
        }
      }

    });

  }

}

感谢所有建议。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database angularfire2


    【解决方案1】:

    我假设您只想从数据库中获取一个对象,而不是获取所有对象,这样您就可以做这样的事情。另外,如果我能看到扩展数据的样子,回答起来会更容易.

    如果您已经知道对象的 uid,您可以执行类似的操作

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

    或者,如果您只想要其中一个对象的完整列表

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

    希望这会有所帮助。如果这不是您所需要的,如果数据得到扩展,我可能会再次回答得更好。

    【讨论】:

    • 抱歉,我的问题不够清楚。我的意思是用户,而不是 UID。我要求的可能吗?
    • 好的,你是说你想要一个特定的用户对象,还是所有其他具有相应用户的对象。即,如果您的实验室附加了用户 ID 或用户对象?
    • 所有其他具有相应用户的对象,所以是后者,但我想使用该用户 ID 或对象获取所有这些对象。这可能吗?
    • 好的,我明白你的意思了。老实说,我不确定您是否可以在 db 调用中完成所有操作,这更像是我对实验室和 uid 的第一次建议,您需要为每个想要的对象做一个。只要对象附加了 userId 或用户名,我就不确定是否有办法在一次调用中获取所有相应的对象
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2021-06-02
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多