angular - Angular 8,Firebase 根据 UID 的集合显示用户
问题描述
我需要一些帮助。试图调查并进行了多次尝试,最终我得到了最后一个用户集合或第一个用户集合,无论如何我都无法返回/查看所有内容。
例如,我有 4 个 UID,我需要显示与这 4 个 UID 匹配的用户,比如说 50 个用户。我尝试使用this.db.list('users/', ref => ref.orderByChild('id').equalTo(<string>id.ids)).snapshotChanges()
,但这仅返回与最后一个值/UID 匹配的用户。
是否有可能以任何可能的方式实现这一目标而不会损失太多性能?
谢谢
解决方案
花了几个小时后,我终于想出了一个解决方案,我在 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$。
注意: 这是代码可以重构并做得更好,这是我的第一个解决方案。重构后,我将编辑此答案。这是以防万一有人遇到同样的问题。
推荐阅读
- javascript - 点击事件上的 Vue 仅在移动设备上返回无法找到变量错误
- firebase - 如何设置 google pub/sub 订阅以调用 firebase 功能
- c# - BeginScope with Serilog
- ionic-framework - ANDROID_HOME=C:\Users\username\AppData\Local\Android\Sdk(已弃用)
- powershell - 从共享文件夹在 VM 上运行 Batchfile
- go - 根据 RFC2045 具有有限行长的 base64 编码
- c# - 将 4 个整数打包到 ulong 中的更好方法是什么?
- javascript - 如何使复选框为每个列表项单独工作?
- java - 使用杰克逊在 JSON 中插入和删除内部节点?
- python - 绘制大型数据集