我已经实现了一个虚拟的反应式存储库,但我正在努力使用更新方法:
@Override
public Mono<User> updateUser(int id, Mono<User> updateMono) {
return //todo with getUser
}
@Override
public Mono<User> getUser(int id) {
return Mono.justOrEmpty(this.users.get(id));
}
一方面我有传入Mono<User> updateMono
的出版商,另一方面我有另一个出版商Mono.justOrEmpty(this.users.get(id))
。
如何将它们组合在一起,进行更新并仅回馈一个发布者?
我唯一想到的是:
@Override
public Mono<User> updateUser(int id, Mono<User> updateMono) {
return getUser(id).doOnNext(user -> {
updateMono.subscribe(update -> {
users.put(id, new User(id, update.getName(), update.getAge()));
System.out.format("Updated user with id %d to %s%n", id, update);
});
});
}
这是对的吗?