Update:
The problems that I encountered with empty value fields are related to non-existent keys in my database, so most of the discourse here will not apply to your question. If you're looking for a way to βjoinβ queries in AngularFire2, the answer below does a great job of this. I am currently using combineLatest instead of forkJoin . For this you need to import 'rxjs/add/observable/combineLatest'; .
I have the following denormalized Firebase structure:
members -memberid1 -threads -threadid1: true, -threadid3: true -username: "Adam" ... threads -threadid1 -author: memberid3 -quality: 67 -participants -memberid2: true, -memberid3: true ...
I want to make username in my threads view, which is sorted by quality .
My service:
getUsername(memberKey: string) { return this.af.database.object('/members/' + memberKey + '/username') } getFeaturedThreads(): FirebaseListObservable<any[]> { return this.af.database.list('/threads', { query: { orderByChild: 'quality', endAt: 10 } }); }
My component:
ngOnInit() { this.threads = this.featuredThreadsService.getFeaturedThreads() this.threads.subscribe( allThreads => allThreads.forEach(thisThread => { thisThread.username = this.featuredThreadsService.getUsername(thisThread.author) console.log(thisThread.username) }) ) }
For some reason, this logs what appears to be unfulfilled observables on the console.

I would like to get these values ββin the threads property, so I can do this in my view as follows:
<div *ngFor="let thread of threads | async" class="thread-tile"> ... {{threads.username}} ... </div>
Updated: console.log for allThreads and thisThread


Updated: subscribed to getUsername ()
this.featuredThreadsService.getUsername(thisThread.author) .subscribe( username => console.log(username))
The result of this is objects with no values:
