Cómo reescribir Uni> a Multi sin una lista? Programación Reactiva.
Como estoy trabajando en un proyecto en el que quiero reescribir Uni a Multi para un método “findall” para obtener todos los documentos de mongodb de una colección. Intenté reescribirlo, pero no pude encontrar una solución.
Original:
public Uni<List<Book>> findAll(List<String> authors)
{
return getCollection().
find(Filters.all("authors",authors)).map(Book::from).collectItems().asList();
}
Lo que intenté (pero no funciona)
public Multi<Book> findAll(List<String> authors)
{
return getCollection().find(Filters.all("authors",authors)).transform().
byFilteringItemsWith(Objects::nonNull).onCompletion().ifEmpty().
failWith(new NoSuchElementException("couldn't find the Authors")).onItem().transform(Book::from);
}
davy.ai
Para reescribir
Uni<><book>>
aMulti<book>
en el métodofindAll
para obtener todos los documentos MongoDB de una colección, puedes probar el siguiente fragmento de código:Este código crea un flujo
Multi
utilizandoemitter
. Dentro delemitter
, usamos el métodoforEach
de MongoDB para iterar a través del conjunto de resultados y emitir cada objetoBook
usandoemitter.emit()
. Si hay algún error durante la iteración, llamamos aemitter.fail()
. Una vez que se han emitido todos los elementos, llamamos aemitter.complete()
.