Как СОЕДИНИТЬ два узла с AngularFire2 и Firebase?

У меня есть эта структура моей базы данных Firebase

введите здесь описание изображения

В каждой библиотеке может быть несколько альбомов. Как я могу отобразить альбомы для каждой библиотеки?

первый элемент albumsPerLib: — это ключ библиотеки, и под каждым ключом библиотеки я храню ключи альбомов, которые ему принадлежат.

Но я не привык к NoSQL и не могу понять, как объединить таблицы для отображения альбомов для каждой библиотеки.


person Ron    schedule 06.12.2016    source источник
comment
См. stackoverflow.com/questions/30299972/   -  person Frank van Puffelen    schedule 06.12.2016
comment
это angularjs, а не 2, и angularfire1, а не 2. с чем я не имел дело. я думаю, но не уверен, что старые не использовали наблюдаемые?   -  person Ron    schedule 06.12.2016
comment
А, это действительно другое. Я думаю, вам придется использовать вызов map(), но я сам использовал его только для синхронных операций.   -  person Frank van Puffelen    schedule 06.12.2016
comment
Я ответил на объединение таблиц в firebase здесь: stackoverflow.com/questions/ 38789299/firebase-joining-tables/   -  person codetinker    schedule 12.12.2016


Ответы (1)


так это работает:

  getAlbumsThatBelongToLib(libKey:string):Observable<Album[]>{
//get the keys for the lib albums
const albumsPerLib$ = this.db.list(`albumsPerLib/${libKey}`);

//map the returned list of keys
//and get their details from the albums node
return albumsPerLib$
  .map((albumKeys) => albumKeys
      .map( (albumKey) => {
         return this.db.object(`albums/${albumKey.$key}`)
      }))
  .flatMap((res) => {
    return Observable.combineLatest(res);
  });
}
person Ron    schedule 08.12.2016