【问题标题】:Angular 8, Firebase Showing users based on collection of UID'sAngular 8,Firebase 根据 UID 的集合显示用户
【发布时间】:2020-02-29 06:30:22
【问题描述】:

我需要一些帮助。试图调查并进行了多次尝试,最终我得到了最后一个用户集合或第一个用户集合,在任何情况下我都无法返回/查看全部。

例如,我有 4 个 UID,我需要显示与这 4 个 UID 匹配的用户,比如说 50 个用户。 我尝试使用this.db.list('users/', ref => ref.orderByChild('id').equalTo(<string>id.ids)).snapshotChanges(),但这只会返回与最后一个值/UID 匹配的用户。

是否有机会在不损失太多性能的情况下以任何可能的方式实现这一目标?

谢谢

【问题讨论】:

  • 请提供一个最小的可重现示例,如 Stackblitz

标签: angular firebase filter view


【解决方案1】:

花了几个小时后,我终于想出了一个解决方案,我在 ngOnInit 上执行了这段代码:

  this.auth.user.subscribe(user => {
  this.db.list('users/' + user.uid + '/friends').valueChanges().pipe(map(changes => {
    return changes.map(x => {
      return x;
    })
  })).subscribe(friends => {
    let test1 = [];
    let test2 = [];
    for (let i = 0; i < friends .length; i++) {
      this.db.list('users/', ref => ref.orderByChild('id').equalTo(<string>friends[i].ids)).snapshotChanges()
        .subscribe(x => {
        test1.push(x);
        test1.forEach(y => {
          y.forEach(z => {
            test1 = [];
            test2.push(z);
            this.friendsList$ = test2;
          })
        })
      });
    }
  });
});

根据下图中显示的这 4 个 uid,我正在获取所有用户配置文件以及每个用户所需的所有数据,以创建与我连接的用户列表。

在模板的最后,我在 *ngFor 循环中使用了 friendsList$。

注意: 这是代码可以重构并做得更好,这是我的第一个解决方案。重构后,我将编辑此答案。这是以防万一有人遇到同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多