从不同的列表中获取数据并通过 angularfire 5 按键组合它们

Get data from different lists and combine them by key with angularfire 5

从 Angularfire5 开始我们不能再使用 $key 所以我试图转换它并找到了一个关于如何将列表更改为包含他们自己的密钥的列表的片段:

  getRankings(week): Observable<any>
  {
    return this.db.list('/ranking_day/d_' + week, ref => ref.orderByChild('position')).snapshotChanges()
    .map(rankings => {
     return rankings.map(action => ({ key: action.key, ...action.payload.val() }))
  })

现在我想从

中的对象获取一些数据
this.db.list('/userProfile' + key)

并将其合并到 return 我的组件的可观察对象。

我为此苦苦挣扎,所以我想我遗漏了一些非常明显的东西......

PS 我知道我的数据模型可能会更好,但那是以后的事情..

看看能不能帮到你。

getDrinks(pagename: string) {

  return this.database.list<DrinkType>(`/${pagename}/drinks`).snapshotChanges().pipe(map(changes => {
      return changes.map(c => ({
         key: c.payload.key,
         drinkType: this.database.list<DrinkType>(`${pagename}/drinkType/${c.payload.key}`) .snapshotChanges().pipe(map(actions => {
               return actions.map(action => ({
               key: action.payload.key,
               ...action.payload.val()
               }))
             })
           ),
          ...c.payload.val()
       }))

     })
  )

}