我有一个我无法通过RxJava2运营商解决的情况。
我有一个"匹配"我从Room取回。这是我的Match POJO。
public class Match {
@PrimaryKey
private int id;
@Ignore
Team rivalTeam;
}
这是我桌上的Dao。
@Dao
public interface MatchDao {
@Query("select * from `match` where homeTeamId= :homeTeamId")
Single<List<Match>> getMatchesByTeamId(int homeTeamId);
}
我的目标是创建一个observable,它将拉出这些匹配,然后将它与将返回rivalTeam的observable合并。
这是我的团队Dao
@Dao
public interface TeamDao {
@Query("select * from teams where id = :teamId")
Single<Team> getTeamById(int teamId);
}
我所取得的就是这个。
private Single<List<Match>> fetchMatches(Team team) {
return matchDao.
getMatchesByTeamId(team.getId()).toObservable().
flatMapIterable(matches -> matches).
map(match -> teamDao.getTeamById(**match.getRivalId()**).toObservable() // this doesn't work ofcourse since map can't return an observable.);
}
我知道我必须拉下两个可观察者,但是我怎么会这样做,因为第二个观察者依赖于第一个? 如果zip可以在单一来源上工作,我本来可以做到 拉链方法中的match.setRivalTeam(团队)。
提示?