Angular 8,Firebase基于UID的集合显示用户

问题描述 投票:0回答:1

我需要一些帮助。试图进行调查并进行了多次尝试,最终我还是遇到了最后一个用户集合或第一个用户集合,无论如何我都无法返回/查看全部。

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

是否有可能以任何可能的方式实现这一目标而又不会过度降低性能?

谢谢

angular firebase filter view
1个回答
0
投票

花了几个小时,我终于想出了一个解决方案,我在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;
          })
        })
      });
    }
  });
});

并且在模板的最后,我在* ngFor循环中使用this.friendsList $。

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

© www.soinside.com 2019 - 2024. All rights reserved.