Actually I stuck in this problem.
I have a stream for events using Angularfire2.
this.events$ = this.af.database.list('/events')
.map(events => {
const filtered = events.filter(event => event.title === "Title 1");
return filtered;
});
which retrieves me data like this:
{
title: "Title 1",
userid: "1"
}
Then I have a second stream for the user like this:
this.users$ = this.af.database.list('/users/1')
.map(users => {
const filtered = users.filter(user => user.name === "Name 1");
return filtered;
});
Now I want to combine the streams to get the following result:
Return me all the events where event.title === "Title 1"
and user.name === "Name 1"
How is this possible?
Thanks in advance!
This answer is outdated! Unfortunately, I can't delete it.
Something like this works for me:
this.events$ = this.af.database.list('/events')
.map(events => {
events.map(event => {
this.af.database.object('users/' + event.userid)
.subscribe(user => {
event.user = user;
})
})
const filtered = events.filter(event => event.title === "Test 1")
.filter(event => event.user.name === "Name 1");;
return filtered;
});
I'm subscribing to the users inside my Event observable. After that I save the user to a property of my event.
Work's fine for me!
Notice: If you want to get real time updates of your user, save the observable to the property and not the user object. <then subscribe to it later in the view.