Saltar al contenido

Cómo hacer una búsqueda simple en string en la base de datos de Firebase?

Te sugerimos que revises esta respuesta en un entorno controlado antes de pasarlo a producción, un saludo.

Solución:

En mi caso pude lograr en parte un SQL LIKE de la siguiente manera:

databaseReference.orderByChild('_searchLastName')
                 .startAt(queryText)
                 .endAt(queryText+"uf8ff")

El personaje uf8ff utilizado en la consulta es un punto de código muy alto en el rango Unicode (es un área de uso privado [PUA] código). Debido a que está después de la mayoría de los caracteres regulares en Unicode, la consulta coincide con todos los valores que comienzan con queryText.

De esta forma, buscando por “Fre” pude obtener los registros que tuvieran como valor “Fred, Freddy, Frey” en _searchLastName propiedad de la base de datos.

Crear dos variables de cadena

    searchInputToLower = inputText.getText().toString().toLowerCase();

    searchInputTOUpper = inputText.getText().toString().toUpperCase();

Luego, en la Consulta, configúrelo en:

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Products");//Your firebase node you want to search inside..

    FirebaseRecyclerOptions options =
            new FirebaseRecyclerOptions.Builder()//the Products is a class that get and set Strings from Firebase Database.
            .setQuery(reference.orderByChild("name").startAt(searchInputUpper).endAt(searchInputLower + "uf8ff"),Products.class)
            .build();

el “nombre” es el nodo dentro del Nodo Principal de Productos.

el .startAt(searchInputUpper) & .endAt(searchInputLower + “uf8ff”) para realizar la búsqueda contiene todos los caracteres que se escribieron en el inputText.getText() que obtiene.

Sección de Reseñas y Valoraciones

Recuerda dar recomendación a esta crónica si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *