Я хочу добавить вложенный документ в документ, используя Spring 5 Reactive.
Для этого я посмотрю свой класс Combat, затем использую массив строк, которые являются идентификаторами, найду эти конкретные существующие документы символов и скопирую их содержимое в документ боя.
URL будет выглядеть следующим образом:
@PatchMapping("/{combId}/characters/add")
У меня есть следующая модель класса боя:
@ToString
@Getter
@Setter
@AllArgsConstructor
@Data
@Document
public class Combat {
@Id
private String id;
private String campaignId;
private String name;
private String description;
@JsonFormat
(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT", locale = "en_US")
private Date dateCreated;
private Set<Character> playerCharacters = new HashSet<>(); // complete documents of the PCs
private Set<Pet> pets = new HashSet<>(); // complete documents of the Pets
private Set<String> monsters = new HashSet<>(); // ids of the monsters
}
Вместе с моделью персонажа:
@ToString
@Getter
@Setter
@AllArgsConstructor
@Data
@Document
public class Character {
@Id
private String id;
private String campaignId;
private String playerId;
private String photoUrl;
private Combatant combatant;
}
Боевой ресурс будет выглядеть следующим образом:
public Mono<Combat> saveCombat(@RequestBody String[] characters, @PathVariable("combId") final String combId) {
Mono<Combat> combat = combatRepository
.findById(combId);
Set<String> characterStringSet = Arrays.stream(characters).collect(Collectors.toSet());
Flux<Character> characterFlux = characterStringSet.stream()
.map(characterRepository::findById);
Я довольно новичок в Reactive, и я просто совершенно не знаю, как это сделать.Как вы можете видеть, я начал распадаться на итеративный стиль программирования, потому что понятия не имел.Если у кого-то есть какие-либо предложения, это было бы замечательно.