2016-12-06 9 views
0

は私が各ライブラリには、いくつかのアルバムを持つことができますAngularFire2とFirebaseで2つのノードを結合するにはどうすればいいですか?

enter image description here

私Firebaseデータベースのこのような構造を持っています。各図書館のアルバムをどのように表示できますか?

albumsPerLib:最初の要素はライブラリキーで、各ライブラリキーの下には、それに属するアルバムキーが格納されます。

私はNoSQLに慣れていないので、テーブルに参加して各ライブラリのアルバムを表示する方法を理解することはできません。

+0

はangularjs 2ではないhttp://stackoverflow.com/questions/30299972/joining-data-between-paths-based-on-id-using-angularfire –

+0

を参照してください。 、angelfire1は2ではありません。私はこれを扱っていません。私は、古いものは観測可能性を使用していないことを確信していると思いますか? – Ron

+0

ああ、それは確かに異なっています。私はあなたが 'map()'呼び出しを使わなければならないと思うが、それは自分自身の同期操作にしか使われていない。 –

答えて

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); 
    }); 
} 
関連する問題