Cómo filtrar Flux de forma asíncrona
Necesito verificar si una subcadena está contenida en el título de la tienda o existencias en esta tienda.
@ Override
public Flux
// Recibí Flxux & lt; List & lt; Shop & gt; & gt;
return shopRepo.findAll ().
// luego verifico si la subcadena está en el título de la tienda
filtro(tiendatienda- & gt; {
if (shop.getTitle (). Contains (searchText) || shop.getDescription (). Contains (searchText)) {
// si contiene, entonces devuelve TRUE si no lo verifica en los stocks
return true;
} más {
// recibí todo el stocks Flux & lt; List & lt; Stock & gt; & gt; de esta tienda y compruebe
return stockService.findStocksByShopId (shop.getId ().
flatMap(stock - & gt; {
if (stock.getDescription (). Contains (searchText) || stock.getTitle (). Contains (searchText)) {
// y en este lugar necesito ayuda
devuelve // verdadero
}
devuelve / /falso
});
});
}
Cuando verifique el contenido de una subcadena en las existencias, me basta con una ocurrencia.
davy.ai
Para verificar si una subcadena está contenida en los stocks de una tienda, se puede utilizar el operador flatMap para recuperar todos los stocks de una tienda y luego usar el operador any para verificar si alguno de los stocks contiene la subcadena. Aquí tienes el nuevo fragmento de código:
El operador flatMapIterable se usa para convertir Flux<>> en un Flux para que podamos aplicar el operador any a cada stock individual. El método block() se utiliza para esperar el resultado del operador any antes de devolver el resultado final. Con esta implementación, si se encuentra la subcadena en el título de una tienda o en la descripción de un stock, esa tienda se incluirá en el resultado final.