Jak přepsat Uni<List<Ovoce>> Multi bez seznamu? Reaktivní Programování

0

Otázka

Jako já jsem pracoval na Projektu, kde chci přepsat Uni Multi pro metodu "findall", aby si všechny mongodb Dokumentu z kolekce. Snažil jsem se to přepsat, ale není schopen najít řešení

originál:

public Uni<List<Book>> findAll(List<String> authors)
    {

        return getCollection().
                find(Filters.all("authors",authors)).map(Book::from).collectItems().asList();
}

Co jsem zkoušel (Ale ne pracovat)

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);
    }
1

Nejlepší odpověď

1

Předpokládám, že používáte ReactiveMongoClient poskytnuté Quarkus. V tomto případě, vaše metoda by měla být:

ReactiveMongoClient client;

public ReactiveMongoCollection<Book> getCollection() {
    return client.getDatabase("db").getCollection("books", Book.class);
}

public Multi<Book> findAll(List<String> authors) {
    return getCollection()
            .find(Filters.all("authors",authors))
            .onItem().transform(Book::from)
            .onCompletion().ifEmpty()
                 .failWith(new NoSuchElementException("..."));

}

Nemusíte dělatbyFilteringItemsWithjako Multi nemůže obsahovat null položky.

2021-11-24 09:50:36

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................